HDU 1231 最大连续子序列:水dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1231
题意:
给你一个整数序列,求连续子序列元素之和最大,并输出该序列的首尾元素(若不唯一,输出首坐标最小的;首坐标相同输出尾坐标最小的)。
题解:
O(N)做法。
定义sum为当前坐标i之前某一段元素[x,i-1]之和。
三种情况:
(1)sum > 0:说明之前的和对答案有贡献,更新sum += a[i],tail = a。
(2)sum < 0:前面的答案是拖后腿的。。。还不如从a[i]重新开始算,sum = a[i],head = a,tail = a。
(3)sum = 0:可要可不要。但答案要求首坐标最小,就要了,同sum > 0的情况。
如果某次sum > ans,则更新:ans = sum, lef = head, rig = tail
AC Code:
1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 #define INF 10000000 5 6 using namespace std; 7 8 int n; 9 int a; 10 int ans; 11 int lef,rig; 12 int start,over; 13 14 int main() 15 { 16 while(cin>>n) 17 { 18 if(n==0) break; 19 int head; 20 int tail=-1; 21 int sum=-INF; 22 ans=-INF; 23 for(int i=0;i<n;i++) 24 { 25 cin>>a; 26 if(i==0) start=a; 27 if(i==n-1) over=a; 28 if(sum>=0) 29 { 30 sum+=a; 31 tail=a; 32 } 33 else 34 { 35 sum=a; 36 head=a; 37 tail=a; 38 } 39 if(sum>ans) 40 { 41 ans=sum; 42 lef=head; 43 rig=tail; 44 } 45 } 46 if(ans>=0) cout<<ans<<" "<<lef<<" "<<rig<<endl; 47 else cout<<"0 "<<start<<" "<<over<<endl; 48 } 49 }
转载于:https://www.cnblogs.com/Leohh/p/7376736.html
HDU 1231 最大连续子序列:水dp相关推荐
- HDU 1231.最大连续子序列-dp+位置标记
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- HDU 1231 最大连续子序列 (动态规划)
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- HDU 1231 最大连续子序列
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- hdu 1231 最大连续子序列 ,1003 Max Sum;
题目(1231) #include<stdio.h> #include<iostream> using namespace std; int main() {int K,num ...
- 【ACM】 1231 最大连续子序列
[1231 最大连续子序列 ** Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- hdu 5586(最大连续子序列和)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5586 官方题解: 令A i =f(A i )−A i ,然后求一遍最大连续子序列和就能知道最多能增加 ...
- 杭电1231最大连续子序列
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- 九度OJ 1011:最大连续子序列 (DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5615 解决:2668 题目描述: 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ...
- HDOJ 1231 最大连续子序列
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
最新文章
- VSCode中experimentalDecorators设置问题
- 在HTML文件中加载js
- 数据分析与挖掘实战-窃电漏电用户的发现
- 设计模式(三)单实例模式
- 六大IT运维服务管理问题总结
- Rhythmbox乱码的解决办法
- 2012第33周国内Android应用下载动态
- java interface简写_JAVA开发中常见缩写(二)
- word与EndNote管理文献~引文格式问题
- 虚拟机遇锁定文件失败问题
- 使用ubuntu20.04一个月后的感受
- Topit专辑原图批量下载JavaScript脚本
- 每日一句英语,看我能够坚持多久
- 数据仓库架构以及数据模型的设计
- 电脑文件打不开怎么解决
- 算法笔记——曼哈顿距离,切比雪夫距离,曼哈顿距离之和 P3964 [TJOI2013]松鼠聚会
- python进行词频统计_如何利用Python进行文本词频统计
- Hilberling电源维修罗芬Rofin激光电源控制器维修HG-101A
- linux内存给hdd当缓存,linux块设备加速缓存之bcache [转]
- 迁移学习_迁移学习简明手册(王晋东)_阅读笔记7-8