Codeforces Round #693 (Div. 3) B. Fair Division

B. Fair Division

题目分析

题意:给你一串数字,只有1和2,问你在不拆开2的情况下能否将数字给两个人,使得两个人分的数字的和相等

首先先判断一下数字和是否为奇数,如果为奇数则直接输出NO;随后再判断输入2的个数为奇数且没有输入1的情况,如果满足此情况,则直接输出NO;除了以上两种情况,之后的任何情况都能达成目的,输出YES

这道题除了这种方法之外还有其他方法,但是作为一道思维题,还是值得我们多去思考一下,发掘隐藏在其背后的规律。

#include<iostream>
using namespace std;
int T, n;
int main(){
    ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    cin >> T;
    while(T--){
        int sum  =0;
        bool f = 0 //标记是否出现过1
        cin >> n;
        for(int i = 0; i < n; i++){
            int x;cin >> x;
            sum += x;
            if(x == 1) f = 1;
        }
        if(sum & 1) cout << "NO" << endl;
        else if(n & 1 && !j) cout << "NO" << endl;
        else cout << "YES" << endl;
    }
    
    return 0;
}
原文地址:https://www.cnblogs.com/FrankOu/p/14235235.html