NOIP2006 最大和
来源:互联网 发布:社交网络电影观后感 编辑:程序博客网 时间:2024/04/29 15:20
题目描述;
N个数围成一圈,要求从中选择若干个连续的数(注意每个数最多只能选一次)加起来,问能形成的最大的和。
输入格式:
第一行输入N,表示数字的个数,第二行输入这N个数字。
输出格式:
输出最大和。
样例输入:
8
2 -4 6 -1 -4 8 -1 3
样例输出:
14
数据说明:
40% 1<=N<=300
60% 1<=N<=2000
100%<= N<=100000,答案在longint范围内。
分析
可以使用前缀和解答,找出mini,但本题是环形,所以在现行的基础上再找一个maxi。
f[i]-mini, f[n]-f[i]+maxi(1<=i<=n)
不断更新最大和最小,维护ans。
代码
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n ,mini ,maxi, sum;int a[100001], s[100001];int main(){int i, ans;freopen("maxsum.in", "r", stdin);freopen("maxsum.out", "w", stdout);scanf("%d", &n); for(i = 1; i <= n; i++) { scanf("%d", &a[i]); s[i] = s[i-1]+a[i]; } maxi = s[n]; mini = s[n]; ans = -2100000000; for (i = n-1; i>=1; i--) { ans = max(ans, max(maxi-s[i], s[i]+s[n]-mini));maxi = max(maxi,s[i]);mini = min(mini,s[i]); } printf("%d\n", ans); fclose(stdin); fclose(stdout);}
0 0
- NOIP2006 最大和
- NOIP2006
- NOIP2006数列
- NOIP2006数列
- NOIP2006题解
- NOIP2006 生日礼物
- NOIP2006数列(sequence)
- NOIP2006解题报告PJ
- 【NOIP2006】能量项链题解
- noip2006初赛-全排列
- noip2006 数列 (二进制)
- NOIP2006能量项链
- noip2006-金明2008.11.5
- NOIP2006 能量项链
- NOIP2006 作业调度方案
- NOIP2006 2k进制数
- Noip2006普及组
- NOIP2006能量项链-dp
- Hibernate-HQL查询(1)基本查询、命名参数
- 2016-6-3基础总结
- 多线程
- FFT算法的完整DSP实现
- 正则表达式
- NOIP2006 最大和
- java的Calendar类如何获取当前时间的时分秒以及毫秒。
- 1083. List Grades (25) PAT
- Weservice以后会有用吧
- 模式识别(Pattern Recognition)学习笔记(十八)--感知器与神经网络
- 安卓矢量图的制作
- zookeeper 客户端源代码剖析
- Hibernate-HQL查询(2)子查询、连接查询
- spring通过注解配置Bean