[Codeforeces]1017B. The Bits
題目URL:http://codeforces.com/contest/1017/problem/B
如果稍為的想一下,是否有想出只有判斷到同一個index的情況下只有ai=0 bi=0 或ai=1 bi=0 才會有需要採取交換的動作呢?(可以停下來想一下)
接下來只要判斷到以上條件,就需要"分別"跟在a裡有1 、0的數字交換,因此在輸入時就可以先把a裡面有1、0的數字分開加總,最後在下面判斷時即可加總需要換的數量。
但是記得每判到了一個就得把自己數的總和減1,否則會在後面時重複記數。
如果稍為的想一下,是否有想出只有判斷到同一個index的情況下只有ai=0 bi=0 或ai=1 bi=0 才會有需要採取交換的動作呢?(可以停下來想一下)
接下來只要判斷到以上條件,就需要"分別"跟在a裡有1 、0的數字交換,因此在輸入時就可以先把a裡面有1、0的數字分開加總,最後在下面判斷時即可加總需要換的數量。
但是記得每判到了一個就得把自己數的總和減1,否則會在後面時重複記數。
#include<bits/stdc++.h> using namespace std; string a,b; signed main() { long long int len,totala=0,totalb=0,total=0; cin >> len; cin >> a; cin >>b; for(int i=0;i<len;i++) { if(a[i]=='0') totala++;
else totalb++;
} for(int i=0;i<len;i++) { if(a[i]==b[i] && a[i]=='0')
{
total+=totalb;
totala--;
}
else if(a[i]!=b[i] && a[i]=='1')
{
total+=totala;
totalb--;
}
} cout << total << endl; return 0; }
留言
張貼留言