求最长总和序列,状态转移方程:dp[i] = max(dp[i-1]+a[i].a[i])

因为可能有负数,所以要判断dp是否大于0,如果小于0则序列中断,从中断点开始

起始点可以用数组s保存,有中断点就保存,没有的话s[i]=s[i-1]

另外还有输出最后换行的问题,有时中间要换行但最后不需要换行,如果没注意可能会出现PE

#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <stack>
using namespace std;#define mem(a,b) memset(a,b,sizeof(a))
#define pf printf
#define sf scanf
#define debug printf("!\n")
#define INF 10000
#define MAX(a,b) a>b?a:b
#define blank pf("\n")
#define LL long longint n;
int dp[100010];
int a[100010];
int s[100010];int main()
{int i,j,t,k;sf("%d",&t);for(k = 1;k<=t;){sf("%d",&n);mem(dp,0);mem(a,0);for(i = 0;i<n;i++){sf("%d",&a[i]);}dp[0]=a[0];int e=1;for(i = 1;i<n;i++){if(dp[i-1]>=0){dp[i] = max(dp[i-1]+a[i],a[i]);s[i] = s[i-1];}else{dp[i] = a[i];s[i] = i;}}int max = -1000;for(i=0;i<n;i++){if(max<dp[i]){max = dp[i];e=i;}}pf("Case %d:\n",k);pf("%d %d %d\n",max,s[e]+1,e+1);k++;if(k<=t)blank;}
}

转载于:https://www.cnblogs.com/qlky/p/5155203.html

Max Sum(经典DP)相关推荐

  1. 杭电60题--part 1 HDU1003 Max Sum(DP 动态规划)

    最近想学DP,锻炼思维,记录一下自己踩到的坑,来写一波详细的结题报告,持续更新. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Problem ...

  2. HDU 1024:Max Sum Plus Plus(DP)

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

  3. 杭电1024 Max Sum Plus Plus状压dp(java)

    问题描述 现在我认为你已经在Ignatius.L的"最大总和"问题中得到了AC.为了成为一名勇敢的ACMer,我们总是向更难挑战的问题挑战自我.现在你面临着一个更困难的问题. 给定 ...

  4. java max sum_杭电1024 Max Sum Plus Plus状压dp(java)

    问题描述 现在我认为你已经在Ignatius.L的"最大总和"问题中得到了AC.为了成为一名勇敢的ACMer,我们总是向更难挑战的问题挑战自我.现在你面临着一个更困难的问题. 给定 ...

  5. 【HDU - 1024 】Max Sum Plus Plus (dp及优化,最大m子段和)

    题干: Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, ...

  6. HDU1024 Max Sum Plus Plus【最大子段和+DP】

    Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...

  7. Max Sum Plus Plus(dp解题)

    Max Sum Plus Plus(hdu-1024) 参考博客 原题描述: Now I think you have got an AC in Ignatius.L's "Max Sum& ...

  8. 整数行hdu 1244 Max Sum Plus Plus Plus(dp)

    废话就不多说了,开始... Max Sum Plus Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/3 ...

  9. hdu 1003 Max Sum (DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others)   ...

  10. HDU 1024 ~ Max Sum Plus Plus (DP + XJB优化)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1024 题意:给你 n 个数字,你可以从中选m个子段(子段不能相交).让选出的子段和和最大. 题解:明显 ...

最新文章

  1. SpringBoot复习:4(@ImportResource)
  2. 为什么不建议你用a.equals(b)判断对象相等
  3. 原生php开发cms,海洋cms视频内容管理系统v10.3 原生PHP代码+影视管理系统+视频点播系统+开源CMS...
  4. python鸡兔同笼编程输出不存在合理答案_Python 解答鸡兔同笼和五家共井问题
  5. 大数据到底是不是“算命”?技术大牛们这样说
  6. Python爬虫环境常用库安装
  7. 基于超大规模集群的本地存储系统优化
  8. 本博客停止更新,后续用博客园。
  9. 续:Fucking 这个网站!
  10. 数据结构与算法(Python)第二天
  11. 编写一个java程序_鼠标在java窗口上的坐标_请问如何在Java中获取窗口外部的鼠标单击坐标...
  12. 安装 EoLinker_4.0 开源版
  13. linux Audit 介绍【架构篇】
  14. 两个摄像头合成一路_一个摄像机怎么添加到两台录像机?
  15. python安装不了whl文件_python怎样安装whl文件
  16. c++中DLL文件的编写与实现——三步走
  17. 等比数列求和python_Python科学计算
  18. ZBrush自带笔刷的特性你都知道哪些?
  19. 算高差改正数的计算机程序,水准测量中的高差改正数应该怎么算?我们是六个点,而且每次只能观测两个点,也就是有六个测段...
  20. 把图片压缩成指定大小,释放你的内存空间

热门文章

  1. 求数组中的最小值以及最小值的序列号
  2. Java学习日志(一)
  3. HTTP协议 -- TCP/IP通信传输流
  4. 理解PeopleSoft集成代理(Integration Broker)-第1部分
  5. RBAC(Role-Based Access Control,基于角色的权限访问控制)—权限管理设计
  6. Android 源码VecotorDrawable
  7. Ext2.2系列(50篇)
  8. Win32 窗口篇(1)
  9. 自学大数据:用以生产环境的Hadoop版本比较
  10. python内置函数源码_python如何查看内置函数源码