
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 long LL d[25][1050]; LL p原创 2013-07-29 16:55:05 · 1059 阅读 · 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 · 1290 阅读 · 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 · 2383 阅读 · 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)=0 d(i,j,0)=1 d(i,j,1)=1 #include #include int a[310][310]; bool d[310][310][310]; int check(int原创 2013-07-26 16:49:35 · 1075 阅读 · 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 long LL ma[110][110]; LL mi[110][110]; LL a[110原创 2013-08-09 15:50:51 · 865 阅读 · 0 评论