摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1514思路:orz...大牛讲的太妙了:题意是给4堆(堆的高度小于等于40)有颜色(颜色的种类小于等于20)的物品,你有一个篮子最多能装5件物品,每次从这4堆物品里面任取一件物品放进篮子里,但是取每堆物品时,必须先取上面的物品,才能取下面的物品,如果发现篮子里的两种物品的颜色一样,那么把这两种物品拿出来,问最后最多能拿出多少对物品?;解题思路:记忆化搜索+dp+状态压缩;因为40×40×40×40不会太大,所以可以用dp[x[1]][x[2]][x[3]][x[4]]记 阅读全文
摘要:
贴几道记忆化搜索题:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1208思路:记忆话搜索,不过有一个trick就是如果map[i][j]==0并且不是终点,就直接返回0了。如果map[i][j]表示跳几格 dp[i][j]表示有几种条法,其实就是一个子状态继承问题,如果map[i][j]为k,那么 dp [i+k][j]和dp[i][j+k]就可以增加 dp[i][j]种跳跃方法了。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstrin 阅读全文
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2677思路:一开始没思路,看大牛一博客也的。。。orz....为了方便处理给每一个装备一个标号,并记录价格和拥有数量,买不到的装备价格用一个特殊的数标记,然后对需要的装备进行递归处理,对于一件装备,如果已经拥有就直接用,如果没有就买,如果买不到就合成。数据保证需要的装备肯定能得到。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 阅读全文
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1625、思路:大牛说是floyd判环,一想确实如此,我还一直在想如果用记忆化的怎么处理环呢...orz....首先通过Floyd预处理,把所有的路径数求出来,即d[i][j]+= d[i][k] * d[k][j]。然后确定有无环,如果存在环的话,即d[k][k] != 0(存在环),那么所有的点i,j,只要经过了k(i->k->j),那么它的路径数是不能确定的,反之,确定。View Code 1 #include 2 #include 3 #include 4 using namesp 阅读全文