1050 循环数组最大子段和
2015-12-31 08:41
363 查看
原题链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1050
如果没有循环的条件,那么我们可以用常规的方法算出最大的字段和max1
然后加上循环这个条件,我们可以先求出整个数组的和,然后在求出数组最小子段和,然后然后相减得到max2,然后和ans=max(max1,max2);
如果没有循环的条件,那么我们可以用常规的方法算出最大的字段和max1
然后加上循环这个条件,我们可以先求出整个数组的和,然后在求出数组最小子段和,然后然后相减得到max2,然后和ans=max(max1,max2);
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; #define inf -100000000 #define inf1 100000000 const int maxn=100000; int a[maxn]; int main() { int n; __int64 sum=0; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&a[i]); sum+=a[i]; } __int64 flag=a[0]; __int64 ma=inf; for(int i=1;i<n;i++) { if(flag<0) flag=a[i]; else flag+=a[i]; if(ma<flag) ma=flag; } __int64 mi=inf1; flag=a[0]; for(int i=1;i<n;i++) { if(flag>0) flag=a[i]; else flag+=a[i]; if(flag<mi) mi=flag; } __int64 max1=max(sum,sum-mi); __int64 ans=max(max1,ma); printf("%I64d\n",ans); }
相关文章推荐
- 1095 Anigram单词(51nod)
- VC6.0工程升级到VS2010遇到问题及解决办法 【LNK2019】 无法解析的外部符号 __iob
- 简单的暴力搜索
- CRB and His Birthday(2015多校)
- 1126 求递推序列的第N项(51nod)
- Arithmetic Sequence(多校第九场)
- Wheels(bfs遍历,CERC 2014)
- Sum(构造,枚举)
- 1278 相离的圆(51nod)
- 1279 扔盘子(51nod)
- Concert Tour(Uvalive 6853)
- 二维hash(Uva 12886)
- 优先队列实现哈弗曼最小权值
- C#实现自动升级(附源码)
- 背包问题------ 分类: ACM 2015-08-03 20:57 1人阅读 评论(0
- Cent Savings (DP) 分类: ACM dp 2015-08-0
- Judging Troubles (multiset查找) 分类: ACM STL
- Judging Troubles (multiset查找) 分类: ACM STL
- Joke with permutation 分类: ACM 2015-08-03 14:09 1
- HNU Knockout Racing 分类: ACM 2015-08-03 13:35 1人