环状合并石子问题。环状无非是第n个要和第1个相邻。可以复制该行石子到原来那行的右边即可达到目的。定义:dp[i][j]代表从第i堆合并至第j堆所要消耗的最小体力。转移方程:dp[i][j]=min(dp[i][k]+dp[k+1][j]+sum[i][j]);复杂度:O(n^3)。可考虑四边形优化。...
分类:
其他好文 时间:
2014-06-02 20:34:03
阅读次数:
226
数位DP问题。定义:cnt[L][K]表示长度为L,最高位为K的满足条件C的个数。首先预处理出cnt数组,枚举当前长度最高位和小一个长度的最高位,如果相差大于2则前一个加上后一个的方法数。然后给定n,计算[1,n-1]中满足条件C的数的个数。设有K位数,则不足K位的累加,然后枚举K位数的情况,从高位...
分类:
其他好文 时间:
2014-06-02 20:33:29
阅读次数:
227
显然是一个状压DP。将方格的摆放分成两种:1.水平摆放:此时所占的两个格子都记为1。2.竖直摆放:此时底下那个格子记为1,上面那个记为0。这样的话,每行都会有一个状态表示。定义:dp[i][s]表示考虑已经填到第i行,这一行状态为s的方法数转移:dp[i][s]
= dp[i][s]+dp[i-1]...
分类:
其他好文 时间:
2014-06-02 20:32:51
阅读次数:
172
混合三种背包问题。定义:dp[i][k]表示体积为k的时候,在前i堆里拿到的最大价值。第一类,至少选一项,dp初值全赋为负无穷,这样才能保证不会出现都不选的情况。dp[i][k]
= max(dp[i][k],max(dp[i-1][k-c]+g,dp[i][k-c]))其中:dp[i][k]是不选...
分类:
其他好文 时间:
2014-06-02 20:32:13
阅读次数:
238
状压DP定义:dp[i][j]为状态为j时,第i行符合条件的状态数转移方程:dp[i][j]
+= dp[i-1][t]
//t为上一行状态,与当前行不冲突。从第一行开始向下枚举,每次枚举当前行的状态和上一行的状态,如果不相邻或者未被地雷占据并且两行的关系是合法的,则加上方法数。最后res
= S....
分类:
其他好文 时间:
2014-06-02 20:09:23
阅读次数:
151
单调队列优化DP。定义dp[i][j]表示第i天手中有j股股票时,获得的最多钱数。转移方程有:1.当天不买也不卖:
dp[i][j]=dp[i-1][j];2.当天买了j-k股: dp[i][j]=max(dp[r][k]+(j-k)*Ap[i]);
(r=1,所以i>w+1时才能转移,这是i#in...
分类:
其他好文 时间:
2014-06-02 20:03:15
阅读次数:
191
LRJ黑书上的例题。化简均方差公式:均值的平方一定,所以只需让矩形的总分的平方和最小即可。定义:dp[k][x1][y1][x2][y2],以(x1,y1)为左上角坐标,(x2,y2)为右下角坐标的矩形,切割K次以后得到的k+1块举行的总分平方和的最小值转移方程:(分成横割和竖割)dp[k][x1]...
分类:
其他好文 时间:
2014-06-02 20:02:34
阅读次数:
243
题意:即求给定n个数字(a1,a2,……an),不改变序列,分成M份,使每一份和的乘积最大。思路:dp[i][j]表示把前i个数字,分成j份所能得到的最大乘积。转移方程:dp[i][j]
= max{ dp[k][i-1]*sum(k+1,j) } 其中显然j#include #include #i...
分类:
其他好文 时间:
2014-06-02 19:58:45
阅读次数:
242
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089题意:给出一个区间[l,r],求满足一个数的数位上没有连着62这个数字串的条件的个数。解法:数位DP的入门题。
1 #include 2 #include 3 #include 4 #include...
分类:
其他好文 时间:
2014-06-01 12:27:14
阅读次数:
229
题目链接:http://poj.org/problem?id=3252题意:给出一个二进制区间,求出0的个数不小于1的个数这样的二进制个数解法:数位DP,定义状态dp[len][num_zero][num_one],num_zero
定义为写0的个数。 1 #include 2 #include 3...
分类:
其他好文 时间:
2014-06-01 12:06:33
阅读次数:
191