动态规划
PursuitOfExcellence
这个作者很懒,什么都没留下…
展开
-
hdu 1506 Largest Rectangle in a Histogram
DP方程:ans=max((right[i]-left[i]+1)*height[i]);#include #include #include #include #include using namespace std; int height[100005]; int LF[100005]; int RT[100005]; int N; int main() { while(scanf("%d",&N),N) { //录入数据 for(int i=1;i原创 2011-04-19 14:45:00 · 384 阅读 · 0 评论 -
hdu 1176 免费馅饼
<br />这道题目把状态拆分一下,变成数塔的模型来做就OK了~~~<br />dp方程:dp[i-1][j]+=max(dp[i][j-1],dp[i][j],dp[i][j+1]); 注意一下范围,并且从下往上循环<br /> <br />#include<iostream> #include<stdio.h> #include<string.h> #include<string> #include<algorithm> using namespace std; int dp[10000原创 2011-04-21 09:52:00 · 318 阅读 · 0 评论 -
hdu 1171 Big Event in HDU 多重背包
这道题目是多重背包的一个变形体,要求A,B两个学院分一堆价值的东西A,B两学院要尽可能的平衡,同时如果无法分得平衡的时候A比B多多重背包即01背包和完全背包的结合体DP方程 1(01背包):dp[i][j]=max(dp[i-1][j],dp[i-1][j-volume[i]]+value[i])DP方程 2(完全背包):dp[i][j]=max(dp[i-1][j-k*volume[i]]+k*value[i])#include #include #include #include using原创 2011-04-21 08:59:00 · 378 阅读 · 0 评论 -
hdu 1087 Super Jumping! Jumping! Jumping!
<br />DP方程:dp[i]=max(dp[i],dp[j]+a[i]);<br /> <br />#include<iostream> #include<stdio.h> using namespace std; long long dp[1005]; int a[1005]; int N; int main() { while(scanf("%d",&N),N) { //录入数据 for(int i=1;i<=N;++i) scanf("%d",&a[i])原创 2011-04-20 12:33:00 · 264 阅读 · 0 评论 -
hdu 2571 命运
<br />http://acm.hdu.edu.cn/showproblem.php?pid=2571<br />DP方程:dp[i][j]=max{dp[i-1][j],dp[i][k],dp[i][j-1]}+dp[i][j]; 其中1<=k<=j-1,且k是j的因子<br />这道题目初始化注意一下,我错了几次都是没初始化呀~~~,害的我现在还木有吃早饭,有木有?有木有~~泪奔啊<br /> <br />#include<iostream> #include<stdio.h> #inclu原创 2011-04-21 07:49:00 · 753 阅读 · 0 评论 -
hdu 2602 Bone Collector
<br />典型的01背包<br />DP方程: dp[i][j]=max(dp[i-1][j],dp[i-1][j-volume[i]]+value[i]);<br /> <br />#include<iostream> #include<stdio.h> #include<string.h> #include<string> using namespace std; int T; int N,V; int value[1005]; int volume[1005]; int dp[10原创 2011-04-20 10:56:00 · 296 阅读 · 0 评论 -
hdu 2084 数塔
<br />DP方程:map[i][j]=map[i][j]+max(map[i+1][j],map[i+1][j+1]);<br />#include<iostream> #include<stdio.h> #include<string.h> #include<string> using namespace std; int C,N; int map[105][105]; void DP() { for(int i=N-1;i>=1;--i) for(int j=1;j<=i;原创 2011-04-18 19:22:00 · 324 阅读 · 0 评论 -
hdu 2955 Robberies
<br />DP方程:dp[j]=max(dp[j],dp[j-m[i]]*p[i]);<br />#include<iostream> #include<stdio.h> #include<string.h> #include<string> using namespace std; double dp[10005]; int m[105]; double p[105]; int main() { int T; scanf("%d",&T); while(T--) {原创 2011-04-18 19:20:00 · 464 阅读 · 0 评论 -
hdu 1231 最大连续子序列
#include #include #include #include #include using namespace std; struct points { int begin; int end; int sum; }point[10005]; int a[10005]; int main() { int K; while(scanf("%d",&K),K) { bool flag=false; memset(a,0,sizeof(a));原创 2011-04-18 19:01:00 · 337 阅读 · 0 评论 -
POJ 3176 Cow Bowling
<br />http://poj.org/problem?id=3176<br />水题<br />#include<iostream> #include<stdio.h> #include<string.h> #include<string> using namespace std; int N; int map[355][355]; void DP() { for(int i=N-1;i>=1;--i) for(int j=1;j<=i;++j) map[i][j]+=原创 2011-04-19 15:45:00 · 415 阅读 · 0 评论 -
POJ 1163 The Triangle
<br />http://poj.org/problem?id=1163<br />和杭电上数塔的题目基本一样,略作修改AC~~<br />#include<iostream> #include<stdio.h> #include<string.h> #include<string> using namespace std; int N; int map[105][105]; void DP() { for(int i=N-1;i>=1;--i) for(int j=1;j<=i;原创 2011-04-19 15:42:00 · 317 阅读 · 0 评论 -
hdu 2159 FATE
<br />http://acm.hdu.edu.cn/showproblem.php?pid=2159<br /> <br />DP方程:dp[i][k]=max(dp[i][k], dp[i - b[j]][k - 1] + a[j]);<br />#include<stdio.h> #include<string.h> #include<math.h> #include<iostream> using namespace std; int main() { int n, m, s,原创 2011-04-21 15:48:00 · 316 阅读 · 0 评论