状态压缩DPDP过程中的状态不可能像背包问题一样只有整数,肯定有各种各样稀奇古怪的状态,需要不止一个变量来表示。这种情况下如果需要使用DP 就必须把状态压缩成一个数来表示,并且一个数只能对应于一种状态。特别地,对于集合我们可以把每一个元素的选取与否对应到一个二进制位里,从而把状态压缩成一个整数,大大方便了计算和维护。对于不是整数的情况,很多时候很难确定一个合适的递推顺序,因此使用记忆化搜索可以避免这...
分类:
其他好文 时间:
2015-05-25 11:30:38
阅读次数:
203
Play Game
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)
Total Submission(s): 894 Accepted Submission(s): 525
Problem Description
Alice and Bob are play...
分类:
其他好文 时间:
2015-05-24 08:54:53
阅读次数:
134
最短路+记忆化搜索#include#include#include#include#includeusing namespace std;const int maxn = 1003;const int INF = 0x3f3f3f3f;vectorljb[maxn];int jz[maxn][max...
分类:
其他好文 时间:
2015-05-23 15:27:09
阅读次数:
120
#1170 : 机器人
时间限制:2000ms
单点时限:1000ms
内存限制:256MB
描述
小冰的N个机器人兄弟排成一列,每个机器人有一个颜色。现在小冰想让同一颜色的机器人聚在一起,即任意两个同颜色的机器人之间没有其他颜色的的机器人。
假设任意相邻的两个机器人可以交换位置,请问最少需要多少次交换?
输入
第一行为一个整数T,为数据...
分类:
其他好文 时间:
2015-05-23 01:20:18
阅读次数:
221
Alice and BobTime Limit: 20 SecMemory Limit: 256 MB题目连接http://acm.hdu.edu.cn/showproblem.php?pid=4111DescriptionAlice and Bob are very smart guys and ...
分类:
其他好文 时间:
2015-05-22 07:03:06
阅读次数:
182
分析:两个人都足够聪明,因此每个阶段都拿最大的。dp[sa][ea][sb][eb]分别表示区间1的开始为sa,结束为ea,区间2的开始为sb,结束为eb时能拿到的最大值。之后分别从四个方向上拿,是个搜索的过程。
#include
using namespace std;
int dp[25][25][25][25]; //dp[sa][ea][sb][eb],分别表示区间1的开始,结束,区...
分类:
其他好文 时间:
2015-05-20 14:50:55
阅读次数:
139
一开始写的dfs进行记忆化结果不知道怎么进行路径的记录。。。改成循环就好了
dp[i] = max(dp[j]) + 1 , weight[j] speed[i]
一开始进行一次排序使得重量递增,这样只需要考虑速度就好了
#include
#include
using namespace std;
const int maxn = 10005;
struct Mouse{
int ...
分类:
其他好文 时间:
2015-05-17 12:20:00
阅读次数:
96
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4834从点1出发,假设现在在i,点数为sta,则下一步的点数必然不能是sta的因数,所以不会形成环,只需从1直接走,走到n即可.但是如果这样的话时空复杂度就都是nk,明显不满足题意...
分类:
其他好文 时间:
2015-05-17 02:01:23
阅读次数:
96
skiing时间限制:3000ms | 内存限制:65535KB难度:5描述Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。...
分类:
其他好文 时间:
2015-05-14 15:54:00
阅读次数:
149
动态规划的核心就是状态和状态转移方程。 对于该题,需要用抽象的方法思考,把当前的位置(i,j)看成一个状态,然后定义状态的指标函数d(i,j)为从格子出发时能得到的最大和(包括格子本身的值)。 在这个状态定义下,原问题的解就是d(i,j). 下面看一下不同状态之间如何转移。从格子(i,j)出发有两种...
分类:
其他好文 时间:
2015-05-14 15:50:34
阅读次数:
132