【CodeForces 353 A】Domino
阿新 • • 發佈:2018-10-03
turn n) ifdef main urn == cpp ifd local
【鏈接】 我是鏈接,點我呀:)
【題意】
【題解】
分類討論一波
設第一個數組的奇數個數為cnt1
第二個數組的奇數個數為cnt2
顯然只有在(cnt1+cnt2)%2==0的情況下。
才可能第一個數組的和為偶數,第二個數組的和也為偶數
(因為奇數都要出現偶數次才可以。
所以只可能cnt1和cnt2都是偶數,那麽輸出0
否則,cnt1和cnt2都是奇數,看看有沒有一個位置i只有a[i]或只有b[i]是奇數。有的話輸出1.
其他情況都非法。
【代碼】
#include <bits/stdc++.h> using namespace std; const int N = 1e2; int n; int x[N+10],y[N+10],cnt1,cnt2; int main() { #ifdef LOCAL_DEFINE freopen("rush.txt","r",stdin); #endif // LOCAL_DEFINE ios::sync_with_stdio(0),cin.tie(0); cin >> n; for (int i = 1;i <= n;i++){ cin >> x[i] >> y[i]; if (x[i]&1) cnt1++; if (y[i]&1) cnt2++; } if (cnt1%2==0 && cnt2%2==0){ cout<<0<<endl; }else if ( (cnt1+cnt2)%2 != 0){ cout<<-1<<endl; }else{ //cnt1+cnt2 == not odd for (int i = 1;i <= n;i++){ if (x[i]&1 && y[i]%2==0) return cout<<1<<endl,0; if (x[i]%2==0 && y[i]&1) return cout<<1<<endl,0; } cout<<-1<<endl; } return 0; }
【CodeForces 353 A】Domino