hdoj 1024 Max Sum Plus Plus(最大m子段和)=-=
来源:互联网 发布:网络品牌策划 编辑:程序博客网 时间:2024/05/16 11:59
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1024
题意:给定由 n个整数(可能为负整数)组成的序列a1,a2,a3,……,an,
以及一个正整数 m,要求确定序列的 m个不相交子段,
使这m个子段的总和达到最大,求出最大和。
ans=max{dp[m,j]}(m<=j<=n)
dp[i][j]=max{ dp[i,j-1]+a[j] , max{ dp[i-1,t]+a[j] } }(i-1=<t<j)
比较记录当前状态和上一状态的最大值
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define Min -0x3f3f3f#define N 1000001int a[N],b[N],dp[N];int main(){ int m,n,ans; while(scanf("%d%d",&m,&n)!=EOF) { int i,j; for(i=1;i<=n;i++) scanf("%d",&a[i]); for(i=0;i<=n;i++) dp[i]=0,b[i]=0; for(i=1;i<=m;i++) { ans=Min; for(j=i;j<=n;j++) { if(dp[j-1]>b[j-1]) dp[j]=dp[j-1]+a[j]; else dp[j]=b[j-1]+a[j]; b[j-1]=ans; if(ans<dp[j]) ans=dp[j]; } b[j-1]=ans; } printf("%d\n",ans); } return 0;}
阅读全文
0 0
- hdoj 1024 Max Sum Plus Plus(最大m子段和)=-=
- HDOJ-1024 Max Sum Plus Plus (最大M子段和问题)
- HDOJ-1024 Max Sum Plus Plus (最大M子段和问题)
- hdu1042 Max Sum Plus Plus【最大M子段和】
- 每日三题-Day1-B(HDOJ 1024 Max Sum Plus Plus 最大m子段和)
- HDOJ 1024 Max Sum Plus Plus 最大M字段和
- hdoj 1024 Max Sum Plus Plus(m个子段最大和)
- hdoj 1024 Max Sum Plus Plus 【动态规划经典题目】【m子段和】
- hdu 1024 Max Sum Plus Plus(dp && 最大m子段和)
- hdu 1024 Max Sum Plus Plus 最大m子段和
- hdu 1024 Max Sum Plus Plus (最大m子段和)
- hdu 1024 Max Sum Plus Plus(最大M子段和)
- HDU 1024 Max Sum Plus Plus[dp](最大m子段和)
- hdu 1024 Max Sum Plus Plus(最大m子段和)
- hdu 1024 Max Sum Plus Plus(最大m子段和)
- HDU 1024 Max Sum Plus Plus最大m子段和
- HDU 1024 Max Sum Plus Plus(最大M子段和)
- HDU 1024 Max Sum Plus Plus(dp最大m子段和)
- compile opencv in centos
- Java中关于多重继承的问题
- 23.Linux
- Java常用API(转载)
- NYOJ XYNUYOJ 郁闷的c小加(一)(数据结构)
- hdoj 1024 Max Sum Plus Plus(最大m子段和)=-=
- MVC框架简介,SSH 和SSM
- 安卓动画(旋转,平移,透明,缩放,帧动画)
- LCS 最大公共序列算法
- 数据库里的DM5和SHA1
- jsp九大内置对象
- [Leetcode] 339. Nested List Weight Sum 解题报告
- POJ1463-Strategic game
- svn clean up falied 终极解决方案