题目:
题意:有一串数,Y和A 两个人取。Y取所有数的和,A取片段(不能全取),如果最后Y的结果大于A的结果,输出YES ,否则输出NO。
思路:1,注意题目中的不能全取,因为是子序列所以不能等于序列,所以只要求1到n-1和2到n里的最大子序列与序列总和做比较。
#include<iostream>
#include<cmath>
using namespace std;
long long t,n;
long long a[100005];
int main()
{
cin>>t;
while(t--)
{
long long sum=0,sum1=0,maxx=0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
sum=sum+a[i];
}
for(int i=0;i<n-1;i++)
{
sum1+=a[i];
if(a[i]>sum1)
sum1=a[i];
maxx=max(sum1,maxx);
}
sum1=0;
for(int i=1;i<n;i++)
{
sum1+=a[i];
if(a[i]>sum1)
sum1=a[i];
maxx=max(maxx,sum1);
}
if(maxx<sum)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}