HDU 1079 Calendar Game (博弈论-sg)
题目大意:
给定日期,轮流来,可以在日期的月上加1,或者在天数上加1 ,如果约数上加1无效,自动转化为在天数上加1,轮流来,问先手是否赢?
解题思路:
这很明显是道博弈题,对于SG的性质定义
必胜态记为P,用数值0表示,当且仅当其后继都是 N,也就是SG()>0
必输态记为N,用数值1表示,当且仅当其后继存在P,也就是SG()=0
对于这题,完全没必要这样用SG去推理,可以结合DP,用记忆化搜索划分为子问题,每一步取对自己最优的。...
分类:
其他好文 时间:
2014-06-22 22:10:22
阅读次数:
253
dp[i][j]:还有i个不相同的位置,还能走j步,一共有多少种走法。
很明显
dp[i][j]=sigm(dp[i-k][j-1]*c[i][k]*c[n-i][m-k]);
用记忆化搜索记忆一下即可。
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define m...
分类:
其他好文 时间:
2014-06-22 08:07:31
阅读次数:
203
经典题目:给一个字符串,求字典序第k小的子串是什么。涉及子串问题,上自动机。首先我们可以用记忆化搜索的方法,求出到达某一个状态后,能产生多少个新状态。首先,到达这个状态就不走了,这肯定是一种状态,然后分别考虑后面的26个指针就好了。不过如果不记忆化肯定是要T的,而且如果用dp好像会有一点问题,因为状...
分类:
其他好文 时间:
2014-06-20 18:54:41
阅读次数:
163
题意:求回收所有垃圾的最短路
思路:先BFS处理两个垃圾的距离,然后DFS记忆化搜索
dp[i][state]表示处理到第i个后状态是state的最短路
#include
#include
#include
#include
#include
#include
using namespace std;
const int MAXN = 30;
const in...
分类:
其他好文 时间:
2014-06-19 12:55:30
阅读次数:
412
Test for Job
Time Limit: 5000MS
Memory Limit: 65536K
Total Submissions: 8990
Accepted: 2004
Description
Mr.Dog was fired by his company. In order to support his famil...
分类:
其他好文 时间:
2014-06-18 11:17:50
阅读次数:
177
题目:有n种硬币,面值分别为V1,V2,...Vn,每种都有无限多。给定非负整数S,可以选用多少个硬币,使得面值之和恰好为S?输出硬币数目的最小值和最大值!
分析:我们把每种面值看作一个点!表示“还需要凑足的面值”,初始状态为S,目标状态为0。那么若当前状态在i,每使用一个硬币j,状态便转移到i-Vj。
代码:
记忆化搜索:
#include
#include
using n...
分类:
其他好文 时间:
2014-06-10 18:45:32
阅读次数:
315
一开始写的高位往低位递推,发现这样有些时候保证不了第四条要求。于是又开始写高位往低位的记忆化搜索,又发现传参什么的蛋疼的要死。然后又发现高位开始的记忆化搜索就是从低位往高位的递推呀,遂过之。
dp[i][j]记录在i位 且 余数为j时的最优解情况。
dp[i][j].next表示当前的最优解是由哪一种状态转移过来的。
代码又写锉了。。
#include
#include
#includ...
分类:
其他好文 时间:
2014-06-10 18:08:31
阅读次数:
222
最短路条数:
求一个图一共一几条最短路径,思路:先从终点跑一边最短路,记录终点到到所有点最短距离(d【i】),然后从起点出发,dfs 按d[i]走(必是最短路径),一句话:我到终点的最短路条数=我的所有孩子到终点的最短路条数之和,这样只需一遍即可。这不知道是不是叫记忆化搜索?
边不可重复最短路径条数:(最短路+建新图之最大流)
hdu3599题意:求1-->n最短路条数,所有路径边不可重复。思路:边不可重复??!!转为流量的为1 的话,求最大流啊(以后切记该方法,不可重复问题...
分类:
其他好文 时间:
2014-06-05 09:36:43
阅读次数:
237
FatMouse and CheeseTime Limit: 2000/1000 MS
(Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4575
Accepted Submission...
分类:
其他好文 时间:
2014-06-02 18:09:45
阅读次数:
232
题意:给出两个01字符串s1,s2.每次改变s1上m个位置的字符。问k步之后使得s1变为s2的方法有多少种。
解法:DP,关键是状态的设计。考虑还是唯一性和可传递性。dp[i][j]表示第i步后有j个不同到目标的走法数。记忆化搜索dp[0][dif](dif表示初始时不同字符的个数)。转移时候枚举选择情况即可。
代码:/*****************************...
分类:
其他好文 时间:
2014-06-02 04:58:01
阅读次数:
216