题目//传说中的记忆化搜索,好吧,就是用深搜//多做题吧,,这个解法是搜来的,蛮好理解的//题目大意:给出两堆牌,只能从最上和最下取,然后两个人轮流取,都按照自己最优的策略,//问说第一个人对多的分值。//解题思路:记忆化搜索,状态出来就非常水,dp[fl][fr][sl][sr][flag],//...
分类:
其他好文 时间:
2014-07-01 12:55:43
阅读次数:
254
题意:有两堆n张的卡片,每张卡片有一个得分,Alice和Bob轮流在两堆卡片的两端取卡片
问Alice先手,取得分数最多为多少;
#include
#include
#include
#include
#include
#include
#define M 50
#define LL long long
using namespace ...
分类:
其他好文 时间:
2014-06-30 17:39:36
阅读次数:
258
Triangle War
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 2685
Accepted: 1061
Description
Triangle War is a two-player game played on the following tria...
分类:
其他好文 时间:
2014-06-27 09:34:45
阅读次数:
286
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
一开始写的高位往低位递推,发现这样有些时候保证不了第四条要求。于是又开始写高位往低位的记忆化搜索,又发现传参什么的蛋疼的要死。然后又发现高位开始的记忆化搜索就是从低位往高位的递推呀,遂过之。
dp[i][j]记录在i位 且 余数为j时的最优解情况。
dp[i][j].next表示当前的最优解是由哪一种状态转移过来的。
代码又写锉了。。
#include
#include
#includ...
分类:
其他好文 时间:
2014-06-10 18:08:31
阅读次数:
222