1 条题解

  • 2

    题目翻译:找一个区间使得区间最大值大于区间和。

    容易发现一个规律:当一个区间全是正数时,那区间和绝对大于区间最大值。而当区间有负数且长度为二时,区间和绝对小于于区间最大值。

    所以只要在数组中,两个两个判断一下有没有负数就行。

    特殊情况:当n=1n=1时,无论如何区间最大值都等于区间和,所以直接输出NO

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int t;
        cin>>t;
        while(t--){
            int n;
            cin>>n;
            int a[100100]={};
            for(int i=0;i<n;i++) cin>>a[i];
            if(n==1) cout<<"NO\n";
            else{
                bool f=0;
                for(int i=0;i<n-1;i++){
                    if(a[i]<0&&a[i+1]<0){
                        f=1;
                        break;
                    }
                }
                if(f)cout<<"YES\n";
                else cout<<"NO\n";
            }
        }
    }
    
    • 1

    【CXXP#2】上帝造题的七分钟 · 神奇的游戏2

    信息

    ID
    38
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    5
    已通过
    3
    上传者