码迷,mamicode.com
首页 > 其他好文 > 详细

B - Just Eat It!

时间:2020-01-16 17:27:08      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:思路   lse   fine   col   sed   int   name   print   alt   

题意:给你一段序列,如果存在一段子序列之和大于序列总和,则输出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\n");
                        else    printf("YES\n");
                }
        }
}
View Code

B - Just Eat It!

标签:思路   lse   fine   col   sed   int   name   print   alt   

原文地址:https://www.cnblogs.com/DreamingBetter/p/12202301.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!