HDU 1024 Max Sum Plus Plus DP+滚动数组
来源:互联网 发布:室内定位 指纹算法 编辑:程序博客网 时间:2024/05/18 10:28
题目链接:Max Sum Plus Plus
状态转移方程
dp[i][j]表示将前j个元素分成i段。
dp[i][j]=max{ dp[i][j-1]+a[i] , dp[i-1][k]+a[i] , (i-1<=k<j) } (i<=j<=n-m+i)
代码
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int MAXN=1000001;int m,n;ll dp[2][MAXN];int a[MAXN];ll Max(ll a,ll b){ if(a>b) return a; else return b;}int main(){ while(scanf("%d%d",&m,&n)!=EOF) { memset(dp,0,sizeof dp); memset(a,0,sizeof a); int t=1; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } for(int i=1;i<=m;i++) { dp[t][i]=dp[1-t][i-1]+a[i]; int mmax=dp[1-t][i-1]; for(int j=i+1;j<=n-m+i;j++) { mmax=Max(dp[1-t][j-1],mmax); dp[t][j]=Max(mmax,dp[t][j-1])+a[j]; } t=1-t; } t=1-t; ll res=-1111111111111; for(int i=m;i<=n;i++) if(res<dp[t][i])res=dp[t][i]; printf("%d\n",res); } return 0;}
阅读全文
0 0
- HDU 1024 Max Sum Plus Plus (DP·滚动数组)
- HDU - 1024 Max Sum Plus Plus(DP + 滚动数组)
- DP+滚动数组-HDU-1024-Max Sum Plus Plus
- HDU 1024 Max Sum Plus Plus DP+滚动数组
- HDU 1024 Max Sum Plus Plus【DP+滚动数组】
- HUD-1024-Max Sum Plus Plus DP+滚动数组
- Hdu 1024 Max Sum Plus Plus 动态规划+滚动数组
- hdu 1024 Max Sum Plus Plus (滚动数组 &&动态规划)
- 【hdu 1024】Max Sum Plus Plus —— dp && 滚动数组
- HDU 1024 Max Sum Plus Plus(普通dp && 滚动数组优化)
- hdu 1024 Max Sum Plus Plus(滚动数组)(DP)
- 【HDU 1024】Max Sum Plus Plus(DP+滚动数组优化+最大m段字段之和)
- DP ( 滚动数组 )——Max Sum Plus Plus ( HDU 1024 )
- hdu 1024 Max Sum Plus Plus--DP
- hdu 1024 Max Sum Plus Plus(dp)
- hdu-1024-Max Sum Plus Plus-DP
- hdu 1024 Max Sum Plus Plus(dp)
- hdu 1024 Max Sum Plus Plus dp
- java基础第十天 接口
- [题解]codeforces444c DZY Loves Colors
- bzoj 2292: 【POJ Challenge 】永远挑战 SPFA
- RecyclerView....
- 二维数组的基础知识
- HDU 1024 Max Sum Plus Plus DP+滚动数组
- extjs 负责人和部门的级联
- Codevs 1268 选择我自己的算法
- (HDU
- ubuntu常见不常见用法(不定期更新)
- 博客文章导航页
- [NOIP2016]天天爱跑步(lca+乱搞)
- 十一、基础教程-图例(Legend)
- CSS样式和选择器