题解 | 子段和

子段和

https://www.nowcoder.com/practice/ee0a9c6366e240f2bbea0ff8594e405e

试着想一下不难发现只有两种情况会NO,一种是本身就含有0,另一种是这个序列全是某个数和其相反数,紧接着我们写出代码

#include <iostream>
#include<bits/stdc++.h>
#include <vector>
using namespace std;
#define int long long
//1 -1 -1
signed main(){
    int n;cin>>n;
    vector<int> a(n+1);
    map<int,int> mp;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        mp[a[i]]++;
        if(a[i]==0){
            cout<<"NO";
            return 0;
        }
    }
    for(int i=1;i<=n;i++){
        if(mp[a[i]]+mp[-a[i]]==n&&mp[a[i]]&&mp[-a[i]]){
            cout<<"NO";
            return 0;
        }
    }
    cout<<"YES";
    return 0;
}

全部评论

相关推荐

03-16 12:39
燕山大学 Java
点赞 评论 收藏
分享
钱嘛数字而已:辅导员肯定不能同意,不然你出事了,他要承担责任。但是,脚和脑子都长在你自己身上,使用它还需要向辅导员报告么? 辅导员必须按流程拒绝你,然后你拿出成年人的态度,做自己的选择。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务