题意:给出一组N个数,每次从中抽出一个数(第一和最后一个不能抽),该次的得分即为抽出的数与相邻两个数的乘积。直到只剩下首尾两个数为止。问最小得分是多少?链接:点我转移方程:dp[i][j]=dp[i][k]+dp[k][j]+a[i]*a[j]*a[k]这里的k一定是最后一步算的,所以乘以a[i]和...
分类:
其他好文 时间:
2015-05-10 18:54:52
阅读次数:
124
题意:给出两个串s1和s2,一次只能将一个区间刷一次,问最少几次能让s1=s2例如zzzzzfzzzzz,长度为11,我们就将下标看做0~10先将0~10刷一次,变成aaaaaaaaaaa1~9刷一次,abbbbbbbbba2~8:abcccccccba3~7:abcdddddcba4~6:abcd...
分类:
其他好文 时间:
2015-05-10 17:16:55
阅读次数:
120
题意:
给你两摞牌,每次可以任意一堆 的牌头或者牌尾抽牌。Alice先抽,Bob后抽,两个人都想抽到最多点数的牌。
做法:
dp[az][ay][bz][by]。 az,ay代表第一堆牌左边 和右边 分别抽到第几张了。然后在这个状态下 Bob抽到的点数。
因为dp表示的Bob的点数,所以牌堆里剩余奇数张牌的时候,是Bob抽,要取各种抽法的最大值。如果只剩偶数张牌,那么是Alice抽,要取 各种抽法中 的最小值。...
分类:
其他好文 时间:
2015-05-09 22:09:25
阅读次数:
169
// poj2955 简单区间dp
// d[i][j]表示i到j区间所能形成的最大匹配序列
// dp[i][j] = max(dp[i][k]+dp[k+1][j]){i<k<j}
// dp[i][j] = max(dp[i+1][j-1]+2) if (s[i] match s[j])
//
// 记忆化搜索的时候,将dp[i][i] = 0 ,其他赋值成-1;
//
// 做题的时候刚开...
分类:
其他好文 时间:
2015-05-09 19:08:13
阅读次数:
118
上次北京赛现场赛的题了,昨天做了道区间dp,突然想起来这道题,都是很类似的,就翻出来做了做
刚开始像昨天做的那道一样,老想着怎么逆推,后来发现这道题应该正着推
其实正推和逆推乍看起来是很相似的,只不过一个是dp[i][j]表示i、j左右还有其他狼时消灭掉i-j这段消耗的费用,一个是表示最后只剩i-j时消灭掉这段的费用
总结一下昨天那道区间dp和今天的区间dp的相同点,发现区间dp适用于费用会...
分类:
其他好文 时间:
2015-05-07 22:05:01
阅读次数:
151