
DP
asuxiexie
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu 1003 MAX sum (简单DP)
起始点是从头开始的,一直到后面搜索,一直到和为小于零,起始点就从开始小于零的后一位开始并把结果改为零,再搜索的过程中,一遇到大的数据就记录下来,把其计为起始点和终点的,这里面主要考虑到,当你搜索到一个位置的,它的和不小于零的,那对于后面来说,加上去还是会变大的,不会给变小的,所以要再搜索下去的,走一边就KO了。代码如下:#include #include #include using namesp原创 2014-07-29 15:09:34 · 601 阅读 · 0 评论 -
hdu 1024 Max Sum Plus Plus(DP)
转移方程dp[i][j]=Max(dp[i][j-1]+a[j],max(dp[i-1][k] ) + a[j] ) 0 此链接中有详解点击打开链接 #include #include #include using namespace std; #define MAXN 1000000 #define INF 0x7fffffff int dp[MAXN+10]; int mma原创 2014-07-29 21:38:42 · 720 阅读 · 0 评论 -
hdu 1176 免费馅饼(dp)
对于每个位置的馅饼数目只上一秒它本身和左右位置的最大馅饼数有关。。 也可将他看做数塔。。 从后往前找最大值。。 #include #include #include #include #include using namespace std; int s[11][100001]; int yy[11]; int e,f; int maxn(int y,int u,int k原创 2014-07-30 11:34:56 · 661 阅读 · 0 评论 -
HDU1159 最长公共子序列
被dp搞得不行不行的,找状态方程太难了。 本题只是个基础题还好; 状态方程为: if(s[i-1]==k[j-1]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=dp[i-1][j]>=dp[i][j-1]?dp[i-1][j]:dp[i][j-1]; #include #include int main() { int a,b,i,j; char原创 2014-07-14 21:13:46 · 1141 阅读 · 0 评论 -
hdu 1087 简单dp
思路和2391一样的。。 #include #include #include #include using namespace std; const int inf=(0x7f7f7f7f); int main() { int a; int s[10005]; int w[10005]; while(scanf("%d",&a)&&a) {原创 2014-08-14 21:38:49 · 744 阅读 · 0 评论 -
hdu 2391 Filthy Rich
简单dp 水一个 处理点的时候,第一行和第一列特殊处理;其余的w[i][j]=show(w[i-1][j-1],w[i-1][j],w[i][j-1])+s[i][j]; #include #include #include #include #include using namespace std; int s[1005][1005]; int w[1005][1005];//存每个点的最大原创 2014-08-14 21:36:58 · 817 阅读 · 0 评论