Codeforces Round #693 (Div. 3) B

https://codeforces.com/contest/1472/problem/B

重点:

如果总和是偶数,并且至少有两个糖果的重量为1(不可能有一个糖果),然后答案总是“是”(我们可以收集重量尽可能接近一半的重量与重量2,然后增加重量1)。

如果没有重量为1的糖果,则需要检查n是否为偶数(因为所有糖果的重量都相同,所以只需将它们分成两半即可)。

#include <iostream>
using namespace  std;
int main()
{
    int t;
    cin>>t;
    while (t--)
    {
        int n;
        cin>>n;
        int  sum1=0;
        int sum2=0;
        int sum=0;
        for(int i=0;i<n;i++)
        {
            int tmp;
            cin>>tmp;
            sum+=tmp;
            if(tmp==1)
                sum1++;
            else if(tmp==2)
                sum2++;
        }
        if(sum1>=2&&sum%2==0)
            cout<<"yes"<<endl;
        else if(n%2==0&&sum1==0)//没有质量为1的糖果,且次数为偶数
            cout<<"yes"<<endl;
        else
            cout<<"no"<<endl;
    }
    return  0;
}

 

posted @ 2021-01-05 17:27  BlackSnow  阅读(72)  评论(0)    收藏  举报