dp
文章平均质量分 52
clevermike
这个作者很懒,什么都没留下…
展开
-
SPOJ 428 - Particular Palindromes(数位类DP)
求长度为L的被m整除的回文串的个数建立状态:d(i,j)表示第i位模m的余数为j的个数d(i,j)=d(i+1,j+k*10^i)(L为奇数且最中间的情况)d(i,j)=d(i+1,j+k*(10^i+10^L-1-i))(其他情况,k从0到9,从一半开始递推)#include #include #define LL long longLL d[25][1050];LL p原创 2013-07-29 16:55:05 · 1032 阅读 · 0 评论 -
SPOJ 1435 - Vertex Cover(树形DP,树的最小点覆盖)
算是个经典题目了,很模板的树形DP题目做这个题的时候一开始就想到树形DP了,可是由于各种原因没写出来,代码太糟烂了,赛后还是改了好久才过的dp(u,0)=sum(dp(v,1));dp(u,1)=sum(min(dp(v,0),dp(v,1)));#include #include #include #include using namespace std;ve原创 2013-07-24 13:02:22 · 1248 阅读 · 0 评论 -
SPOJ 130 - Rent your airplane and make money(dp+优化)
题意:有n列预定航班,从st时刻开始出发,飞行时间为d,花费为p,且同一时刻不能有两个航班,求最大的花费对航班的开始时间(或结束时间)按升序排序,从后往前找到对应结束时间所在的航班位置(如按结束时间排序则需要从前往后)d[i]=max(d[j]+p)#include #include #include #include using namespace std;typedef原创 2013-07-26 14:07:21 · 2339 阅读 · 0 评论 -
HDU 4618 - Palindrome Sub-Array(2013MUTC2-1008)(DP)
d(i,j,k)表示左上角坐标为(i,j),k为正方形边长d(i,j,k)=1,如果d(i+1,j+1,k-2)=0,且上下两个外围的相等且回文,左右两个外围的相等且回文;否则d(i,j,k)=0d(i,j,0)=1d(i,j,1)=1#include #include int a[310][310];bool d[310][310][310];int check(int原创 2013-07-26 16:49:35 · 1049 阅读 · 0 评论 -
SPOJ 364 - Pocket Money(DP)
很简单的递归结构的DP,状态转移方程:dmax(i,j)=max(dmax(i,j),dmax(i,k)dmax(k,j));dmin(i,j)=max(dmin(i,j),dmin(i,k)dmin(k,j))#include #include #define LL unsigned long longLL ma[110][110];LL mi[110][110];LL a[110原创 2013-08-09 15:50:51 · 834 阅读 · 0 评论