ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#479 | #106. 「NOIP2024」编辑字符串 | ryp | 90 | 209ms | 4008kb | C++14 | 1.6kb | 2025-04-25 10:09:44 | 2025-04-25 10:09:44 |
answer
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
char s[N], t[N], z[N], w[N];
// 我操。T1 也过大样例了。
// 我一定不会输的。我一定不会输的。
int main (void)
{
int tc;
cin.tie (0)->sync_with_stdio (false);
cin >> tc;
while (tc--) {
int n;
cin >> n >> (s + 1) >> (t + 1);
cin >> (z + 1) >> (w + 1);
// 再,认真考虑一下。
// 前面都可以交换的部分,直接贪心。
// 每遇到一个 0,我们就停下来,算一算这段区间内,任意交换的贡献。
int i = 1, j = 1;
int s0 = 0, s1 = 0, t0 = 0, t1 = 0, res = 0;
auto count = [&](int &x, int &y, char c) -> void
{ if (c == '0') x++; else y++; };
int la = 0, lb = 0;
while (i <= n || j <= n) {
while (i <= n && z[i] == '1') count (s0, s1, s[i++]);
while (j <= n && w[j] == '1') count (t0, t1, t[j++]);
int l = min (i, j) - max (la, lb);
if (l < 0) l = 0;
int u = min ({ l, s0, t0 });
res += u, s0 -= u, t0 -= u;
u = min ({ l - u, s1, t1 }), res += u, s1 -= u, t1 -= u;
if (i == j) {
if (i < n && s[i] == t[j]) res++;
s0 = s1 = t0 = t1 = 0;
i++, j++;
continue;
}
if (i < j) {
// s 在 t 的前面,s 要往后走了!
if (s[i] == '0' && t0) t0--, res++;
if (s[i] == '1' && t1) t1--, res++;
s0 = s1 = 0, la = ++i;
}
else {
if (t[j] == '0' && s0) s0--, res++;
if (t[j] == '1' && s1) s1--, res++;
t0 = t1 = 0, lb = ++j;
}
}
cout << res << '\n';
for (int i = 0; i <= n + 10; i++) s[i] = t[i] = z[i] = w[i] = 0;
}
return 0;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 5
Accepted
time: 1ms
memory: 3180kb
input:
10 9 111101010 101011100 101111111 111111011 9 001110100 111010101 111111111 011011111 8 01000100 00...
output:
8 7 6 9 4 5 4 4 4 7
result:
ok 10 tokens
Test #2:
score: 5
Accepted
time: 3ms
memory: 3636kb
input:
10 10 0110100110 0100000010 1011011011 0101110111 7 0100110 0001100 0011111 1111111 8 00000000 11111...
output:
7 6 0 4 4 2 7 7 8 6
result:
ok 10 tokens
Test #3:
score: 5
Accepted
time: 3ms
memory: 3244kb
input:
10 10 1001000001 0100000011 1000101101 0011111100 9 111111100 000000000 111001010 100011011 9 111111...
output:
6 2 5 0 10 2 7 4 8 3
result:
ok 10 tokens
Test #4:
score: 5
Accepted
time: 1ms
memory: 3612kb
input:
10 10 1011011111 0000000000 1111100010 0001011111 9 000000000 000100100 111111111 000111110 7 111011...
output:
2 7 3 4 8 2 3 5 4 7
result:
ok 10 tokens
Test #5:
score: 5
Accepted
time: 3ms
memory: 3448kb
input:
10 999 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
405 765 180 993 368 465 562 104 471 287
result:
ok 10 tokens
Test #6:
score: 5
Accepted
time: 2ms
memory: 3572kb
input:
10 998 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
514 504 541 518 598 337 108 445 320 533
result:
ok 10 tokens
Test #7:
score: 0
Wrong Answer
time: 17ms
memory: 4008kb
input:
10 100000 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
975 48187 43831 36011 48402 12101 68446 26937 14167 37132
result:
wrong answer 2nd words differ - expected: '48188', found: '48187'
Test #8:
score: 5
Accepted
time: 2ms
memory: 3740kb
input:
10 99999 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
32254 46821 36505 43488 59340 47604 54524 53897 53675 25677
result:
ok 10 tokens
Test #9:
score: 0
Wrong Answer
time: 4ms
memory: 3272kb
input:
10 1000 00000001001000000000001011000011100000010100011001101000100000000000000000000000000000000011...
output:
463 511 423 412 534 553 828 587 512 520
result:
wrong answer 5th words differ - expected: '535', found: '534'
Test #10:
score: 5
Accepted
time: 3ms
memory: 3372kb
input:
10 997 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
534 569 588 635 623 582 479 510 656 402
result:
ok 10 tokens
Test #11:
score: 5
Accepted
time: 26ms
memory: 3668kb
input:
10 100000 111011111110110111111111010001011110111001101111010101010101111011111110011111011111111101...
output:
59099 60314 62231 58265 75929 36728 58446 62981 59041 19224
result:
ok 10 tokens
Test #12:
score: 5
Accepted
time: 26ms
memory: 3624kb
input:
10 99999 0111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110...
output:
50503 60559 64431 51759 55159 78816 88085 57698 65174 91077
result:
ok 10 tokens
Test #13:
score: 5
Accepted
time: 2ms
memory: 3452kb
input:
10 997 100000001000000010100000110000010010100011000100000000010001000100011010010001001100001000000...
output:
477 829 592 573 614 132 931 610 980 237
result:
ok 10 tokens
Test #14:
score: 5
Accepted
time: 3ms
memory: 3448kb
input:
10 999 000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100...
output:
503 242 975 885 750 528 896 389 387 258
result:
ok 10 tokens
Test #15:
score: 5
Accepted
time: 16ms
memory: 3740kb
input:
10 100000 101111010011110111110101110111111001001011011001111111011111011111001111001111010110111011...
output:
47943 42512 86300 81321 81110 69327 48115 24200 30695 54529
result:
ok 10 tokens
Test #16:
score: 5
Accepted
time: 23ms
memory: 3748kb
input:
10 99998 1111111111111111111111111111111111111111101111111111111111111111111111111111111111111111111...
output:
87231 36605 52504 24563 45410 86215 72694 26325 39997 59428
result:
ok 10 tokens
Test #17:
score: 5
Accepted
time: 0ms
memory: 3228kb
input:
10 999 000100010000110000010000100101010000010001100001100101001010001000110111100100000011000111001...
output:
776 646 705 452 759 130 699 560 427 614
result:
ok 10 tokens
Test #18:
score: 5
Accepted
time: 4ms
memory: 3636kb
input:
10 998 101000000000000000001000000010000000000000000000000010000001010101000000000010000000000100100...
output:
472 616 691 649 567 307 170 748 727 701
result:
ok 10 tokens
Test #19:
score: 5
Accepted
time: 32ms
memory: 3812kb
input:
10 99999 0000000100000000001000100000001000000000000000000000000001000000000000000000011000000000000...
output:
70833 64573 51649 93023 74958 62637 67006 80120 76759 63472
result:
ok 10 tokens
Test #20:
score: 5
Accepted
time: 38ms
memory: 3996kb
input:
10 99999 0000001101101101001111001111000111111000111101111111111011110010111111011101010111101010101...
output:
59680 67434 35099 69290 59184 81406 64316 50750 65959 42615
result:
ok 10 tokens