【Codeforces Round #693 (Div. 3) B】Fair Division
阿新 • • 發佈:2021-01-08
技術標籤:ios
題目連結
翻譯
translation
題解
先用 \(2\) 然後用 \(1\) 補來湊n/2就行。
挺顯然的一個貪心。
程式碼
#include <bits/stdc++.h> #define lson l,mid,rt*2 #define rson mid+1,r,rt*2+1 #define LL long long using namespace std; const int N = 100; int a[N+10]; int main(){ ios::sync_with_stdio(0),cin.tie(0); int T; cin >> T; while (T--){ int n; cin >> n; int cnt[3]; cnt[1] = cnt[2] = 0; for (int i = 1;i <= n; i++){ cin >> a[i]; cnt[a[i]]++; } int goal = cnt[1] + cnt[2]*2; if (goal%2==1){ cout <<"NO"<<endl; }else{ goal/=2; int x,y; //x*2+y = goal int t = goal; x = goal/2; x = min(x,cnt[2]); t-=x*2; if (t<=cnt[1]){ cout <<"YES"<<endl; continue; } cout <<"NO"<<endl; } } return 0; }