首页 > 其他 > 详细

Codeforces Round #682 (Div. 2) B. Valerii Against Everyone (思维)

时间:2020-11-14 18:40:53      阅读:55      评论:0      收藏:0      [点我收藏+]

技术分享图片

  • 题意:给你一组数\(b\),对于每个\(b_i\),相对应的\(a_i=2^{b_i}\),问你是否能找出两个不相交的区间,使得两个区间的\(a_i\)的元素和相等.

  • 题解:对于任意一个\(2^k\),如果它只能由\(2^k\)相加得到的话,那么只能是他自己本身,或者这些\(2^k\)中含有相同元素,我们可以推一下,\(1,2,4,8,16,32,64\),\(8\)只能由自己或者\(4*2\),\(2*4\)得来,所以某个\(2^k\)必须出现多次,所以只要判断是否有相同元素即可.

  • 代码:

    int t;
    int n;
    int a[N];
    map<int,int> mp;
    
    int main() {
        ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
        cin>>t;
        while(t--){
        	cin>>n;
        	rep(i,1,n) cin>>a[i];
        	mp.clear();
        	bool flag=false;
        	rep(i,1,n){
        		if(mp[a[i]]) {flag=true;break;}
        		mp[a[i]]++;
        	}
        	if(flag) cout<<"YES\n";
        	else cout<<"NO\n";
        }
     
        return 0;
    }
    

Codeforces Round #682 (Div. 2) B. Valerii Against Everyone (思维)

原文:https://www.cnblogs.com/lr599909928/p/13974117.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!