Max Sum Plus Plus

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 31583    Accepted Submission(s): 11174

Problem Description
Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. Now you are faced with a more difficult problem.

Given a consecutive number sequence S1, S2, S3, S4 ... Sx, ... Sn (1 ≤ x ≤ n ≤ 1,000,000, -32768 ≤ Sx ≤ 32767). We define a function sum(i, j) = Si + ... + Sj (1 ≤ i ≤ j ≤ n).

Now given an integer m (m > 0), your task is to find m pairs of i and j which make sum(i1, j1) + sum(i2, j2) + sum(i3, j3) + ... + sum(im, jm) maximal (ix ≤ iy ≤ jx or ix ≤ jy ≤ jx is not allowed).

But I`m lazy, I don't want to write a special-judge module, so you don't have to output m pairs of i and j, just output the maximal summation of sum(ix, jx)(1 ≤ x ≤ m) instead. ^_^

 
 
Input
Each test case will begin with two integers m and n, followed by n integers S1, S2, S3 ... Sn.
Process to the end of file.
 
 
Output
Output the maximal summation described above in one line.
 
 
Sample Input
1 3 1 2 3 2 6 -1 4 -2 3 -2 3
 
Sample Output
6 8

Hint
Huge input, scanf and dynamic programming is recommended.
 
不加优化:
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<memory.h>
using namespace std;
int dp[][],a[];
int main()
{
int n,m,j,i,k,Max;
while(~scanf("%d%d",&m,&n)){
Max=;
memset(dp,,sizeof(dp));
for(i=;i<=n;i++) scanf("%d",&a[i]);
for(i=;i<=m;i++)
for(j=i+1;j<=n;j++){
dp[i%][j]=dp[i%][j-]+a[j];
for(k=i-;k<=j-;k++)
if(dp[(i-)%][k]+a[j]>dp[i%][j]) dp[i%][j]=dp[(i-)%][k]+a[j];
if(i==m&&dp[i%][j]>Max) Max=dp[i%][j];
}
printf("%d\n",Max);
}
return ;
}
然后发现k的范围【i-1,j-1】之间可以直接记录一个Maxp
emmmmm,以前做过还是搞忘了
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<memory.h>
using namespace std;
int dp[][],a[];
int main()
{
int n,m,j,i,k,Max,Maxp;
while(~scanf("%d%d",&m,&n)){
Max=-;
for(i=;i<=n;i++) scanf("%d",&a[i]);
for(i=;i<=n;i++) dp[][i]=dp[][i]=; for(i=;i<=m;i++) {
Maxp=dp[(i-)%][i-];
dp[i%][i]=dp[(i-)%][i-]+a[i];
for(j=i+;j<=n-m+i;j++){
if(dp[(i-)%][j-]>Maxp) Maxp=dp[(i-)%][j-];
dp[i%][j]=dp[i%][j-]+a[j];
if(Maxp+a[j]>dp[i%][j]) dp[i%][j]=Maxp+a[j];
}
}
for(i=m;i<=n;i++)
if(dp[m%][i]>Max) Max=dp[m%][i];
printf("%d\n",Max);
}
return ;
}

至于此题的数据范围,呵呵,不存在的。

 

HDU1024 DP的优化 最大M子段和问题的更多相关文章

  1. 「学习笔记」wqs二分/dp凸优化

    [学习笔记]wqs二分/DP凸优化 从一个经典问题谈起: 有一个长度为 \(n\) 的序列 \(a\),要求找出恰好 \(k\) 个不相交的连续子序列,使得这 \(k\) 个序列的和最大 \(1 \l ...

  2. 【BZOJ-4518】征途 DP + 斜率优化

    4518: [Sdoi2016]征途 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 230  Solved: 156[Submit][Status][ ...

  3. 【BZOJ-3437】小P的牧场 DP + 斜率优化

    3437: 小P的牧场 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 705  Solved: 404[Submit][Status][Discuss ...

  4. 【BZOJ-1010】玩具装箱toy DP + 斜率优化

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 8432  Solved: 3338[Submit][St ...

  5. 【Codeforces 321E / BZOJ 5311】【DP凸优化】【单调队列】贞鱼

    目录 题意: 输入格式 输出格式 思路: DP凸优化的部分 单调队列转移的部分 坑点 代码 题意: 有n条超级大佬贞鱼站成一行,现在你需要使用恰好k辆车把它们全都运走.要求每辆车上的贞鱼在序列中都是连 ...

  6. HDU3480_区间DP平行四边形优化

    HDU3480_区间DP平行四边形优化 做到现在能一眼看出来是区间DP的问题了 也能够知道dp[i][j]表示前  i  个节点被分为  j  个区间所取得的最优值的情况 cost[i][j]表示从i ...

  7. 动态规划DP的优化

    写一写要讲什么免得忘记了.DP的优化. 大概围绕着"是什么","有什么用","怎么用"三个方面讲. 主要是<算法竞赛入门经典>里 ...

  8. 【bzoj5197】[CERC2017]Gambling Guide 期望dp+堆优化Dijkstra

    题目描述 给定一张n个点,m条双向边的无向图. 你要从1号点走到n号点.当你位于x点时,你需要花1元钱,等概率随机地买到与x相邻的一个点的票,只有通过票才能走到其它点. 每当完成一次交易时,你可以选择 ...

  9. 【BZOJ】1096: [ZJOI2007]仓库建设(dp+斜率优化)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1096 首先得到dp方程(我竟然自己都每推出了QAQ)$$d[i]=min\{d[j]+cost(j+ ...

随机推荐

  1. 简易版jQuery——mQuery

    前面的话 虽然jQuery已经日渐式微,但它里面的许多思想,如选择器.链式调用.方法函数化.取赋值合体等,有的已经变成了标准,有的一直影响到现在.所以,jQuery是一个伟大的前端框架.前端世界日新月 ...

  2. HTML5新增web存储方式

    客户端存储数据的两个对象为: 两个对象在使用方式没有任何区别,唯一的不同点蚀储存数据 的有效时间 ①localStorage - 没有时间限制的数据存储 除非手动删除,否则数据将一直保存在本地文件: ...

  3. 个人作业(2)---英语学习APP案例分析

    第一部分 调研, 评测 1.下载并使用,描述最简单直观的个人第一次上手体验. PC上的必应词典主页面与其他英语学习APP类似,一些英文读物的推送,但是每日阅读需要去浏览器去看有点不太方便,我觉得直接在 ...

  4. 姑娘你大胆地往前走——答大二学生XCL之八问

    姑娘你大胆地往前走--答大二学生XCL之八问 以下问题的答案写给我家正在读大二的XCL. 写于 2017-9-13 晚 请问您是为什么选择了IT行业的? 与其说是我选择了行业,不如说是行业选择了我. ...

  5. 201521123114 《Java程序设计》第4周学习总结

    1. 本章学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 学会了设计一个类时,尽量用private修饰属性,public修饰方法:类名的首字母要大写. ...

  6. 201521123062《Java程序设计》第2周学习总结

    1.本周学习总结 声明一个变量后必须对变量进行显式的初始化: 各种数据类型,运算符,表达式的使用: 枚举是初步了解及使用: 字符串String类 2.书面作业 Q1.使用Eclipse关联jdk源代码 ...

  7. 201521123042 《Java程序设计》 第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 上周总结了异常,这周主要总结多线程. 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题 ...

  8. 陈敏 Java课设实验报告

    1.团队课程设计博客链接 http://www.cnblogs.com/ohanna/p/7064305.html 2.个人负责模板或任务说明 1.负责完成主界面 2.随机数的产生, 3.数字大小的比 ...

  9. php数据库操作小要点

    保留小数点后两位 $ba = floor(($v[2]/$sum[0][0])*10000); //取整数 $bb = $ba/100; //两位小数 列的值加一可以直接用自身,不用单独查询出来 $s ...

  10. iOS - 内购总结

        如果有人以后要在做内购这一块.希望可以好好的阅读这篇文章,虽然不是字字珠玑.但是也是本人亲人趟过了无数的坑,希望可以对大家有所帮助!  下面是在研究工程中遇到的问题(iOS 内购的流程如下 1 ...