杭电1024Max Sum Plus Plus
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1024
题目:
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. ^_^
Process to the end of file.
2 6 -1 4 -2 3 -2 3
8
Huge input, scanf and dynamic programming is recommended.
dp[i]\a[i] | 2 | -1 | 3 | -8 | 9 |
1 | 2 | ||||
2 | 1 | ||||
3 | 4 | ||||
4 | -4 | ||||
5 | 9 |
dp i\j) | -1 | 4 | -2 | 3 | -2 | 3 |
1 | -1 | 4 | 2 | 5 | 3 | 6 |
2 | \ | 3 | 2 | 7 | 5 | 8 |
3 | \ | \ | 1 | 6 | 5 | 10 |
4 | \ | \ | \ | 4 | 4 | 9 |
5 | \ | \ | \ | \ | 2 | 7 |
maxtemp | \ | \ | \ | \ | \ | \ |
1 | -1 | 4 | 4 | 5 | 5 | \ |
2 | \ | 3 | 3 | 7 | 7 | \ |
3 | \ | \ | 1 | 6 | 6 | \ |
4 | \ | \ | \ | 4 | 9 | \ |
5 | \ | \ | \ | \ | 2 | \ |
\ | \ | \ | \ | \ |
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <queue>
#include <stack>
#include <map>
#include <vector> #define N 1000010
#define PI acos((double)-1)
#define E exp(double(1))
using namespace std;
int dp1[N];
int maxtemp[N];
int a[N]; int main(void)
{
int n, m, max1;
while (scanf("%d%d", &m, &n) == )
{
for (int i = ; i <= n; i++)
scanf("%d", &a[i]);
dp1[] = maxtemp[] = max1 = a[];
for (int i = ; i <= n; i++)
{
if (max1 >= )
{
dp1[i] = a[i] + max1;
max1 += a[i];
}
else
{
dp1[i] = a[i];
max1 = a[i];
}
}
for (int i = ; i <= m; i++)
{
maxtemp[i-] = dp1[i-];
for (int j = i ; j < n; j++)
{
if (maxtemp[j - ]<dp1[j])
{
maxtemp[j] = dp1[j];
}
else
maxtemp[j] = maxtemp[j - ];
}
for (int j = i; j <= n; j++)
{
if (i == j)
dp1[j] = maxtemp[j - ] + a[j];
else
dp1[j] = max(dp1[j - ], maxtemp[j - ]) + a[j];
}
}
max1 = dp1[m];
for (int i = m; i <= n; i++)
if (max1<dp1[i])
max1 = dp1[i];
cout << max1 << endl; }
return ;
}
杭电1024Max Sum Plus Plus的更多相关文章
- 杭电1024----Max Sum Plus Plus
/* 这题还没有理解透彻.某个dalao也不写注释.只能自己理解了... 先求为i个元素(1<=i<=M)为一个区间的最大和,保证元素个数大于等于i个,递推到M个即可 借鉴原址:http: ...
- 杭电1003-Max Sum
Max Sum Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the ...
- 杭电1003_Max Sum
这是原题的链接http://acm.hdu.edu.cn/showproblem.php?pid=1003 起初我是利用暴力的方法,求出所有序列的和的情况,每取一个序列就和以知道的最大和作对比,取大者 ...
- 杭电ACM2058--The sum problem
http://acm.hdu.edu.cn/showproblem.php?pid=2058 以为简单的穷举就完了,结果是一直Time Limit Exceeded.. 这是代码: #include ...
- acm入门 杭电1001题 有关溢出的考虑
最近在尝试做acm试题,刚刚是1001题就把我困住了,这是题目: Problem Description In this problem, your task is to calculate SUM( ...
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
- 高手看了,感觉惨不忍睹——关于“【ACM】杭电ACM题一直WA求高手看看代码”
按 被中科大软件学院二年级研究生 HCOONa 骂为“误人子弟”之后(见:<中科大的那位,敢更不要脸点么?> ),继续“误人子弟”. 问题: 题目:(感谢 王爱学志 网友对题目给出的翻译) ...
- 杭电ACM(1002) -- A + B Problem II 大数相加 -提交通过
杭电ACM(1002)大数相加 A + B Problem II Problem DescriptionI have a very simple problem for you. Given two ...
- Help Johnny-(类似杭电acm3568题)
Help Johnny(类似杭电3568题) Description Poor Johnny is so busy this term. His tutor threw lots of hard pr ...
随机推荐
- linux命名对文件的读写和退出
vi xxx.txt 打开就能看到里面的内容.按 i 进入编辑模式,然后就可以输入内容了,也可以移动光标到你要删除内容的位置按删除键来删除内容.编辑完后可以按 Esc(键盘左上角) 进入命令模式.然后 ...
- 自定义select模拟--基于jQuery
说明 模拟select,实现原生select不能实现的样式 将html结构入在Html页面中,css,js做分离 开发人员引用只要引入相关文件,并$().selectbox()就可转换样式,有更新 ...
- Batch Normailzation
转自:http://blog.csdn.net/malefactor/article/details/51476961
- 第一百六十三节,jQuery,基础核心
jQuery,基础核心 一.代码风格 在jQuery程序中,不管是页面元素的选择.内置的功能函数,都是美元符号“$”来起 始的.而这个“$”就是jQuery当中最重要且独有的对象:jQuery对象,所 ...
- 第一百六十二节,jQuery入门介绍
jQuery入门 学习要点: 1.什么是 jQuery 2.学习 jQuery的条件 3.jQuery的版本 4.jQuery的功能和优势 5.其他 JavaScript库 6.是否兼容低版本 I ...
- ISP图像调试工程师
汉邦高科 任职要求: 1. 电子工程.图像与信号处理.计算机等相关专业,本科及以上学历: 2. 在数字图像处理.视频压缩等方面具有扎实的理论背景知识: 3. 熟悉Sony.Panasonic.Apti ...
- 蓝桥杯 第三届C/C++预赛真题(2) 古堡算式(数学题)
福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!” 华生:“我猜也是!” 于是,两人沉默了好久, ...
- Java逍遥游记读书笔记<二>
Abstract抽象类 1.抽象类不能被实例化 2.抽象方法没有方法体 如: public abstract class Weapen { public abstract void attack(); ...
- Domino移动Web上传的附件到RichText域
只是从网上拷贝下来,没有测试. 得到上传文件的路径http://searchdomino.techtarget.com/tip/Trap-an-attachment-path-via-the-Domi ...
- 自动更新本地 GIT 仓库
随着开源软件的兴起,尤其是 GITHUB 的蓬勃发展,很多开源软件都通过 GIT 进行管理,在我的计算机上就一个目录是我关注并使用的开源软件 GIT 本地副本,如何定期更新这些仓库,一个个的更新太累人 ...