Codeforces Round #248 (Div. 2) A. Kitahara Haruki's Gift

解决思路是统计100的个数为cnt1,200的个数为cnt2

cnt1    cnt2

奇数      奇数            

奇数      偶数

偶数      奇数

偶数     偶数

当cnt1为奇数时一定剩余一个100,不能均分,所以输出结果为NO    

 当cnt1为偶数且cnt2为偶数则肯定能均分

当cnt1为偶数且cnt2为奇数时

    如果有至少两个100,则取出2个100,转换成200,则cnt2就是偶数,而cnt1也是偶数,可以均分

  否则没有两个100,则cnt2是奇数不能均分

#include <iostream>
using namespace std;

int main(){
    int n;
    cin >> n;
    int cnt1 = 0, cnt2 = 0,weight;
    for(int i = 0; i < n ; ++ i){
        cin >> weight;
        if(weight == 100) cnt1++;
        else cnt2++;
    }
    if(cnt1%2) cout<<"NO"<<endl;
    else{
        if(cnt2%2 == 0) cout<<"YES"<<endl;
        else{
            cnt1/=2;
            if(!cnt1) cout<<"NO"<<endl;
            else cout<<"YES"<<endl;
        }
    }
}
原文地址:https://www.cnblogs.com/xiongqiangcs/p/3750192.html