[HDU 1003] Max Sum
一道很老的题目了,题解也很多,我比较智障,以前勉强做出来了,有一天看见了,又做不出来了。写一篇题解稍微强化下。
题目大意:
给N个数 1~1000000 ,有正有负,判断里面连续最长的和是多少,并且是从第几个加到第几个数。
如果题目中的N小一点,比如只有1000或者10000的话,很容易就可以用前缀和的暴力平方复杂度过去。然而,如果N比较大的话,像这题。就只能用O(n)的优化的算法。也就是只扫一遍。
首先思考,比如我的数列是 5 6 -1 3 4 这样,要求和最大。那么我们很明显,前两个数字会被算进去,因为都是正数,加上去一定更大。然后遇到了负数-1,这个时候,前面的数字和 sum 到底要不要加上-1,似乎要关系到后面的数字的情况,比较麻烦。实际上细细的思考以后,发现如果遇到了一个数,情况只有两种:
1. 前面的和,加上了当前的数字,会得到比只有当前数字更好的情况。
2. 当前数字不加上前面的sum,sum等于当前数字,结果更加大。
如果碰到了第二种情况,我们要更新记录起点终点,也就是说,前面的和没有我们现在考虑的大。
如果碰到第一种情况,我们只需要加上当前的数字,也就是说结果只能更加好。
主体情况就是:
开始时 :
ans = a[1]; ans_begin = ans_end = temp = 1;
//
接下来:
for(int i = 2 ; i <= n ; i++){
if(a[i] > sum + a[i]){
temp = i;
sum = a[i];
}else{
sum += a[i];
}
if(sum > ans){
ans = sum;
ans_begin = temp;
ans_end = i;
}
}
基本思路如上。
转载于:https://www.cnblogs.com/ticsmtc/p/5560927.html
[HDU 1003] Max Sum相关推荐
- HDU.1003 Max Sum
原题 HDU.1003 Max Sum 分类 动态规划 题意 计算从一个序列中最大连续子序列和.对应的起始元素和终止元素的位置. 输入/输出 要求与格式 样例数的确定 最开始一行开始输入样例数 每个样 ...
- hdu 1003 Max Sum (DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 1003 Max Sum 解题报告
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Problem Description Given a sequence a[1],a[2],a[3 ...
- [hdu 1003] Max Sum
跟<算法导论(第三版)>上的一样,抄下来的 30 - 60 ms 标准的分治策略 1 #include <stdio.h> 2 3 int A[100000], Lenght; ...
- hdu 1003 Max Sum
DP可以这里给出非DP程序 题目传送门 1 #include<stdio.h> 2 int main() 3 { 4 int t,n,i,max,m,sum,ki,kj,k,a,b; 5 ...
- HDU 1003——Max Sum(动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 题目大意:历遍所有数字,找出最大字段和. 解题思路: t和n:记录循环次数和每一段有多少个数字 ...
- 位置子段最大子段和 hdu 1003 max sum ACM的开始
每日一贴,今天的内容关键字为位置子段 这个标题的印象是较比刻深的,我的第一个动态规划标题,也是ACM的开始.最大字段和是较比经典的动归问题.求一个列序的最大子段和的关键点就在于断判一个元素的归属问题, ...
- HDU 1244 Max Sum Plus Plus Plus
虽然这道题看起来和 HDU 1024 Max Sum Plus Plus 看起来很像,可是感觉这道题比1024要简单一些 前面WA了几次,因为我开始把dp[22][maxn]写成dp[maxn][2 ...
- 杭电OJ——ACM 1003.Max Sum
Max Sum 杭电OJ--ACM 1003.Max Sum链接入口 问题描述 大意: 给定一个序列a[1],a[2],a[3]-a[n],你需要算出其子序列中的最大值.比如说:给你一个 ...
- HD 1003 Max Sum (最大字段和问题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Problem Description Given a sequence a[1],a[2],a ...
最新文章
- 王飞跃 | 面向未来的AI人才应该具备这3种思维
- Forms Authentication timeout and Expiration
- Jquery获取外网IP
- JMeter场景设置叙述
- oracle通过sid远程登录,oracle怎么捕获用户登录信息,如SID,IP地址等
- scala的foreach和for
- c语言中fr,关于frwite()函数的一个问题,弄了好久就是不行,求解啊!
- Struts2中action接受参数方法
- 如何在网页中加入百度地图
- 特斯拉回应Model 3新车无USB接口:芯片短缺
- mysql 主从 索引_Mysql繁忙主从库在线修改表结构与添加索引问题
- git ignore 某行
- HR常用的人力资源系统软件有哪些?
- idea中 Java xml注释缩进问题 解决方案
- python实现基于selenium的天猫淘宝秒杀,支持定金商品,自动付款
- Python内存映射文件读写
- Java使用iTextPDF生成PDF文件
- 闲聊linux中的input设备(4) 她一直默默地在背后支持着你
- 设计模式(一)设计模式的分类与区别
- ISCC2016Basic Writeup