51nod 1050 循环数组最大子段和(基础dp)
来源:互联网 发布:人工智能猜出眉毛 编辑:程序博客网 时间:2024/06/13 08:58
刚开始还以为把数组复制一份接在后边求最大子段和呢,结果wa。。。然后就想了想两重循环,看数据量这样肯定会超时。。就去看看讨论版,思路很简单,可是想不到啊。。。
摘自讨论版:
答案有两种形式1.正常的最大连续序列2.开始在尾,结束的首第一种正常求,第二种考虑答案的组成,开始的一段+到结尾的一段,那么中间为什么去掉呢,因为中间那段和为负数,只要求出负数最大的子段和去掉就行了max(ans1,sum+ans2);
#include <iostream>#include <algorithm>#include <cstdio>using namespace std;typedef long long ll;const int MAXN = 50010;ll num;int main(){ //freopen("in","r",stdin); int n; cin >> n; ll total = 0; ll sum1=0; ll sum2=0; ll minn = 1e9; ll maxn = -1e9; for(int i = 0; i < n; ++i) { cin >> num; total += num; sum1 += num; sum2 += num; if(sum1 < 0) sum1 = 0; if(sum2 > 0) sum2 = 0; if(sum1 > maxn) maxn = sum1; if(sum2 < minn) minn = sum2; } cout << max(maxn,total-minn) <<endl; return 0;}
0 0
- 51nod 1050 循环数组最大子段和 dp
- 51Nod 1050 循环数组最大子段和(DP—最大子段和变形)
- 51nod 1050 循环数组最大子段和(基础dp)
- 51nod 循环数组最大子段和 (dp)
- 51Nod-1050 循环数组最大段和【最大子段和+最小子段和+DP】
- 【循环数组最大子段和】51nod 1050 循环数组最大子段和
- 51Nod 1050 循环数组最大子段和(dp)
- 【51Nod】1050 - 循环数组最大子段和(dp)
- 51nod oj 1050 循环数组最大子段和 【DP】
- 51nod 1050 循环数组最大子段和
- 51nod 1050 循环数组最大子段和
- 51nod 1050 循环数组最大子段和
- 51nod 1050 循环数组最大子段和
- 51nod 1050 循环数组最大子段和
- 51nod-1050 循环数组最大子段和
- 51nod 1050 循环数组最大子段和
- 51Nod 1050 循环数组最大子段和
- 51nod 1050 循环数组最大子段和
- 数据在计算机中的存储形式和运算
- iOS性能之WebP
- java调用CXF WebService接口的两种方式
- 附件上传既支持IE7及以上版本又支持集群服务器上跨域的解决方案
- ldap初始化DSCC默认实例时报错:Failed to find a free port number !
- 51nod 1050 循环数组最大子段和(基础dp)
- JQuery实现简单的服务器轮询效果
- tomcat启动失败常见问题
- VisualVM 远程连接服务器
- MongoDB学习记录11-分片-副本集(mongodb3.2版本以后)
- 自定义view
- CentOS 6.8下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器
- 如何使用Valgrind memcheck工具进行C/C++的内存泄漏检测
- 分布式架构学习之持续集成:009--SVN版本管理系统的安装和使用(CentOS+Subversion+Apache+Jsvnadmin)