题目链接: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相关推荐

  1. HDU 1231.最大连续子序列-dp+位置标记

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  2. HDU 1231 最大连续子序列 (动态规划)

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  3. HDU 1231 最大连续子序列

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  4. hdu 1231 最大连续子序列 ,1003 Max Sum;

    题目(1231) #include<stdio.h> #include<iostream> using namespace std; int main() {int K,num ...

  5. 【ACM】 1231 最大连续子序列

    [1231 最大连续子序列 ** Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...

  6. hdu 5586(最大连续子序列和)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5586 官方题解: 令A i =f(A i )−A i  ,然后求一遍最大连续子序列和就能知道最多能增加 ...

  7. 杭电1231最大连续子序列

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  8. 九度OJ 1011:最大连续子序列 (DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5615 解决:2668 题目描述: 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ...

  9. HDOJ 1231 最大连续子序列

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

最新文章

  1. VSCode中experimentalDecorators设置问题
  2. 在HTML文件中加载js
  3. 数据分析与挖掘实战-窃电漏电用户的发现
  4. 设计模式(三)单实例模式
  5. 六大IT运维服务管理问题总结
  6. Rhythmbox乱码的解决办法
  7. 2012第33周国内Android应用下载动态
  8. java interface简写_JAVA开发中常见缩写(二)
  9. word与EndNote管理文献~引文格式问题
  10. 虚拟机遇锁定文件失败问题
  11. 使用ubuntu20.04一个月后的感受
  12. Topit专辑原图批量下载JavaScript脚本
  13. 每日一句英语,看我能够坚持多久
  14. 数据仓库架构以及数据模型的设计
  15. 电脑文件打不开怎么解决
  16. 算法笔记——曼哈顿距离,切比雪夫距离,曼哈顿距离之和 P3964 [TJOI2013]松鼠聚会
  17. python进行词频统计_如何利用Python进行文本词频统计
  18. Hilberling电源维修罗芬Rofin激光电源控制器维修HG-101A
  19. linux内存给hdd当缓存,linux块设备加速缓存之bcache [转]
  20. 迁移学习_迁移学习简明手册(王晋东)_阅读笔记7-8

热门文章

  1. 关于socket和 jsp的几个问题
  2. HttpServlet中的service方法
  3. 23种设计模式及其对应实例-转
  4. 又一道软通动力7K月薪面试题——银行业务调度系统
  5. golang协程退出
  6. 多进程同时写一个文件会怎样?分别用write和fwrite去观察现象
  7. 口语学习Day1:天气
  8. 以指针的形式和以下标的形式访问指针?以指针的形式和以下标的形式访问数组?
  9. 线程:suspend与resume方法
  10. capistranorb