[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,否則會在後面時重複記數。


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

留言

這個網誌中的熱門文章

[ZJ] b229: TOI 2009 第一題:路徑問題

交大資工(APCS組)(面試&心得)

滿是挫傷的ION CAMP