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