![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 59
wsxsd94
这个作者很懒,什么都没留下…
展开
-
UVA437 - The Tower of Babylon - 动态规划
这道题需要考虑到一个长方体三条边随意组合可以有六种摆放方式原创 2014-08-08 15:29:58 · 390 阅读 · 0 评论 -
POJ1988 - Cube Stacking - 并查集
并查集,带权,只需要find的时候更新原创 2014-08-12 18:39:37 · 441 阅读 · 0 评论 -
POJ3122 - Sum of Different Primes - 动态规划
完全背包问题,对物品和背包都有限制,原创 2014-08-12 12:12:14 · 487 阅读 · 0 评论 -
Hdu1176 - 免费馅饼 - 动态规划
数塔变形题 第0秒 5 第1秒 4 5 6 第2秒 3 4 5 6 7 第3秒 2 3 4 5 6 7 8 第4秒 1 2 3 4 5 6 7 8 9 第原创 2014-08-10 14:07:27 · 498 阅读 · 0 评论 -
POJ3230 - Travel - 动态规划
状态转移方程是dp[i][j]=max(dp[i][j],dp[i-1][k]+inc[i][j]-co[k][j]); #include #include int dp[105][105];//第i天在j城市的最大收入 int inc[105][105];//i天在j城市的收入 int co[105][105];//从i城市到j城市花费 int main() { int m,n; whil原创 2014-08-10 12:37:39 · 488 阅读 · 0 评论 -
POJ2346 - Lucky tickets - 动态规划
感觉是典型的背包dp[i][j]+=dp[]原创 2014-08-10 08:48:14 · 551 阅读 · 0 评论 -
Hdu1059 - Dividing - 动态规划
这道题主要还是二分比较重要,否则TLE #include #include int dp[100000]; int v[7]; int main() { int cas=0; while(scanf("%d%d%d%d%d%d",&v[1],&v[2],&v[3],&v[4],&v[5],&v[6])!=EOF) { cas++; if(!原创 2014-08-09 17:04:13 · 622 阅读 · 0 评论 -
Hdu1159 - Common Subsequence - 动态规划
最基本的LCS,懂了原理很简单 #include #include int dp[1000][1000]; int main() { char str1[1000]; char str2[1000]; while(scanf("%s %s",str1+1,str2+1)!=EOF) { int i,j; int t1=strlen(str1); int t2=strlen(s原创 2014-08-10 10:20:26 · 398 阅读 · 0 评论 -
UVA10534 - Wavio Sequence - 动态规划
这个题一开始我用朴素的dp做,TLE了- -,然后百度原创 2014-08-09 13:41:23 · 484 阅读 · 0 评论 -
UVA11584 - Partitioning by Palindromes - 动态规划
#include #include char ch[1005]; int dp[1005]; int min(int a,int b) { return a<b?a:b; } int pand(int a,int b) { while(a<b) { if(ch[a]!=ch[b]) { return 0; } a++; b--; } return 1; } in原创 2014-08-07 19:17:40 · 416 阅读 · 0 评论 -
URAL1005 - Stone Pile - 动态规划
01背包,看成总石头质量的一半的背包,因为一般zhuangxiade原创 2014-08-08 16:46:20 · 696 阅读 · 0 评论 -
UVA11404 - Palindromic Subsequence - 动态规划
这道题思路是找最少去掉几个字符可以构成回文,那么就可以倒序之后求LCS,注意,只需要原创 2014-08-08 10:56:28 · 548 阅读 · 0 评论 -
Hdu2089 - 不要62 - 数位dp
#include#includeint dp[10][3];/*dp[i][0]为位数小于等于i且不含62也不含4的数字的个数dp[i][1]为位数为i且首位为2且不含62也不含4的数字的个数dp[i][2]为位数小于等于i且含62或4的数字的个数*/int digit[10];void er(){dp[0][0]=1;for(int i=1;i<=10;i++){dp[i][0]=dp[i-1]原创 2014-07-11 11:39:42 · 497 阅读 · 0 评论 -
Hdu3555 - Bomb - 数位dp
#include #include __int64 dp[30][3]; /*dp[i][0]为位数小于等于i且不含49的数字的个数 dp[i][1]为位数为i且首位为9且不含49的数字的个数 dp[i][2]为位数小于等于i且含49的数字的个数 */ __int64 digit[30]; void er() { memset(dp,0,sizeof(dp)); dp[0][0]=1; fo原创 2014-07-12 09:36:10 · 435 阅读 · 0 评论 -
URAL1009 - K-based Numbers - 数位dp
非常水,其实只是用数位dp的想法想了一下,考虑第一位0还是1就行了 #include int dp[20]; int main() { int n,k; while(scanf("%d%d",&n,&k)!=EOF) { dp[0]=k-1; dp[1]=(k-1)*k; for(int i=2;i<n;i++) { dp[i]=(k-1)*(dp[i-1]+dp[i原创 2014-08-07 17:43:45 · 438 阅读 · 0 评论 -
Hdu3038 - How Many Answers Are Wrong - 并查集
并查集,左端点并到右端点里,原创 2014-08-12 18:36:21 · 417 阅读 · 0 评论