0
点赞
收藏
分享

微信扫一扫

牛客NC13885:Music Problem(用bitset优化)

闲云困兽 2022-02-03 阅读 59

牛客NC13885:Music Problem

题面:

bitset<限定的长度> bit;

bitset不用担心长度会爆,对于过长的数字,会自动截取限定的长度,所以初始的长度只要限定能用上的长度即可;

那么对于bit|=bit<<x来讲相当于把之前各种的数都加一个x

然后bit|=bit>>3600相当于把多余3600的那部分对3600进行取模,后再加到bit中;

最后只要判断bit[3600]这个位置是否存在即可

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+50;
const int mod=3600;
int n,idx;
bitset<7000> bit;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int t;cin>>t;
    while(t--){
        bit.reset();
        cin>>n;
        bit[0]=1;
        for(int i=1;i<=n;i++){
            int x;cin>>x;
            x=x%3600;
            bit|=bit<<x;
            bit|=bit>>3600;
        }
        if(bit[3600]) cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
    return 0;
}
举报

相关推荐

0 条评论