Skip to the content.

A. Puzzle From the Future

Link

Solution

好久没有写过题了,老年痴呆复健计划。

大致题意是给一个b求满足最大d的a,我的思路是尽可能凑出形如121212或者212121的序列:

哎当然了这是我的ac思路,题解就写得巨nm牛逼了。

Code

int main()
{
    int n, t;
    string b;
    cin >> t;
    while (t--) {
        string ans = "1";
        int flag = 0;
        cin >> n >> b;
        if (b[0] == '1') flag = 1;
        for (int i = 1; i < n; i++) {
            if (flag == 1) {
                if (b[i] == '0') { ans += '1'; }
                else
                    ans += '0';
                flag = 0;
            }
            else if (flag == 0) {
                if (b[i] == '0') {
                    ans += '0';
                    flag = -1;
                }
                else {
                    ans += '1';
                    flag = 1;
                }
            }
            else {
                ans += '1';
                if (b[i] == '0') flag = 0;
                else
                    flag = 1;
            }
        }
        cout << ans << endl;
    }
    return 0;
}

Code(Tutorial)

int main()
{
    int n, t;
    string b;
    cin >> t;
    while (t--) {
        cin >> n >> b;
        string ans = "1";
        for (int i = 1; i < n; i++) {
            if ('1' + b[i] != ans[i - 1] + b[i - 1]) ans += "1";
            else
                ans += "0";
        }
        cout << ans << "\n";
    }
    return 0;
}