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;
        }
    }
}

 

 

posted @ 2014-05-24 18:47  OpenSoucre  阅读(623)  评论(0编辑  收藏  举报