B - Just Eat It!
Posted dreamingbetter
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了B - Just Eat It!相关的知识,希望对你有一定的参考价值。
题意:给你一段序列,如果存在一段子序列之和大于序列总和,则输出NO,不存在则输出YES。
思路:因为是子序列所以不能等于序列,所以只要求1到n-1和2到n里的最大子序列与序列总和做比较。
#include<bits/stdc++.h> #define N 1e5+10 using namespace std; int main(){ long long int t,n,a[int(N)],i,j,sum,k,maxx; while(~scanf("%lld",&t)){ while(t--){ scanf("%lld",&n); for(i=k=0;i<n;i++){ scanf("%lld",&a[i]); k+=a[i]; } for(i=0,sum=0,maxx=-1;i<n-1;i++){ sum+=a[i]; if(a[i]>sum) sum=a[i]; maxx=max(sum,maxx); } for(i=1,sum=0;i<n;i++){ sum+=a[i]; if(a[i]>sum) sum=a[i]; maxx=max(sum,maxx); } if(maxx>=k) printf("NO "); else printf("YES "); } } }
以上是关于B - Just Eat It!的主要内容,如果未能解决你的问题,请参考以下文章
B. Just Eat It! CodeForces1285B
Codeforces Round #613 (Div. 2) B. Just Eat It!