A. Puzzle From the Future
Solution
好久没有写过题了,老年痴呆复健计划。
大致题意是给一个b求满足最大d的a,我的思路是尽可能凑出形如121212或者212121的序列:
- 如果d[i-1]为2,则d[i]应该为1。
- 如果d[i-1]为1或0,则d[i]应该尽量为2,否则为0。
哎当然了这是我的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;
}