Max Sum(经典DP)
求最长总和序列,状态转移方程: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)相关推荐
- 杭电60题--part 1 HDU1003 Max Sum(DP 动态规划)
最近想学DP,锻炼思维,记录一下自己踩到的坑,来写一波详细的结题报告,持续更新. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Problem ...
- HDU 1024:Max Sum Plus Plus(DP)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): ...
- 杭电1024 Max Sum Plus Plus状压dp(java)
问题描述 现在我认为你已经在Ignatius.L的"最大总和"问题中得到了AC.为了成为一名勇敢的ACMer,我们总是向更难挑战的问题挑战自我.现在你面临着一个更困难的问题. 给定 ...
- java max sum_杭电1024 Max Sum Plus Plus状压dp(java)
问题描述 现在我认为你已经在Ignatius.L的"最大总和"问题中得到了AC.为了成为一名勇敢的ACMer,我们总是向更难挑战的问题挑战自我.现在你面临着一个更困难的问题. 给定 ...
- 【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, ...
- 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 ...
- 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& ...
- 整数行hdu 1244 Max Sum Plus Plus Plus(dp)
废话就不多说了,开始... Max Sum Plus Plus Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
- hdu 1003 Max Sum (DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 1024 ~ Max Sum Plus Plus (DP + XJB优化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1024 题意:给你 n 个数字,你可以从中选m个子段(子段不能相交).让选出的子段和和最大. 题解:明显 ...
最新文章
- SpringBoot复习:4(@ImportResource)
- 为什么不建议你用a.equals(b)判断对象相等
- 原生php开发cms,海洋cms视频内容管理系统v10.3 原生PHP代码+影视管理系统+视频点播系统+开源CMS...
- python鸡兔同笼编程输出不存在合理答案_Python 解答鸡兔同笼和五家共井问题
- 大数据到底是不是“算命”?技术大牛们这样说
- Python爬虫环境常用库安装
- 基于超大规模集群的本地存储系统优化
- 本博客停止更新,后续用博客园。
- 续:Fucking 这个网站!
- 数据结构与算法(Python)第二天
- 编写一个java程序_鼠标在java窗口上的坐标_请问如何在Java中获取窗口外部的鼠标单击坐标...
- 安装 EoLinker_4.0 开源版
- linux Audit 介绍【架构篇】
- 两个摄像头合成一路_一个摄像机怎么添加到两台录像机?
- python安装不了whl文件_python怎样安装whl文件
- c++中DLL文件的编写与实现——三步走
- 等比数列求和python_Python科学计算
- ZBrush自带笔刷的特性你都知道哪些?
- 算高差改正数的计算机程序,水准测量中的高差改正数应该怎么算?我们是六个点,而且每次只能观测两个点,也就是有六个测段...
- 把图片压缩成指定大小,释放你的内存空间
热门文章
- 求数组中的最小值以及最小值的序列号
- Java学习日志(一)
- HTTP协议 -- TCP/IP通信传输流
- 理解PeopleSoft集成代理(Integration Broker)-第1部分
- RBAC(Role-Based Access Control,基于角色的权限访问控制)—权限管理设计
- Android 源码VecotorDrawable
- Ext2.2系列(50篇)
- Win32 窗口篇(1)
- 自学大数据:用以生产环境的Hadoop版本比较
- python内置函数源码_python如何查看内置函数源码