ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#203443 | #3554. A | Daniel1024 | 100 | 2211ms | 17620kb | C++ | 1.4kb | 2024-02-25 10:52:53 | 2024-02-25 13:11:10 |
answer
#include<bits/stdc++.h>
using namespace std;
int n, q;
int f[2000005];
int ans;
int sz[2000005];
int num0[2000005], num1[2000005];
void init(int now, int l, int r){
sz[now] = 1;
num0[now] = 1;
if(l == r){
return;
}
int mid = l+r>>1;
init(now * 2, l, mid);
init(now * 2 + 1, mid + 1, r);
num0[now] += num0[now * 2];
num0[now] += num0[now * 2 + 1];
sz[now] += sz[now * 2];
sz[now] += sz[now * 2 + 1];
}
void down(int now, int l, int r){
if(f[now]){
f[now * 2] ^= 1;
f[now * 2 + 1] ^= 1;
swap(num0[now * 2], num1[now * 2]);
swap(num0[now * 2 + 1], num1[now * 2 + 1]);
f[now] = 0;
}
}
void change(int now, int l, int r, int x, int y){
if(x <= l && r <= y){
f[now] ^= 1;
swap(num0[now], num1[now]);
return;
}
down(now, l, r);
int mid = l+r>>1;
if(x <= mid)change(now * 2, l, mid, x, y);
if(y > mid)change(now * 2 + 1, mid + 1, r, x, y);
num0[now] = num0[now * 2] + num0[now * 2 + 1];
num1[now] = num1[now * 2] + num1[now * 2 + 1];
if(num0[now] == sz[now * 2] + sz[now * 2 + 1])num0[now]++;
if(num1[now] == sz[now * 2] + sz[now * 2 + 1])num1[now]++;
}
signed main(){
cin >> n >> q;
init(1, 1, n);
while(q--){
int l, r;
scanf("%d%d", &l, &r);
change(1, 1, n, l, r);
printf("%d\n", sz[1] - num0[1]);
}
return 0;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 2ms
memory: 1368kb
input:
3518 3574 1583 2547 2169 2446 929 3386 424 3058 1324 1882 910 3249 415 900 62 192 798 2221 1494 1821...
output:
1939 1391 3565 3076 3000 4261 3330 3596 3416 3722 3369 3591 2123 3506 3602 4191 3231 2967 3549 3037 ...
result:
ok 3574 numbers
Test #2:
score: 10
Accepted
time: 0ms
memory: 1492kb
input:
4320 3128 752 3594 901 1922 4031 4283 1191 2989 6 3522 2948 3970 2538 3477 1685 2170 32 260 2300 253...
output:
5696 3662 4174 3511 4895 6485 4786 4771 4322 3849 3845 6157 3491 4563 4486 3993 4279 4133 4358 4147 ...
result:
ok 3128 numbers
Test #3:
score: 10
Accepted
time: 0ms
memory: 1488kb
input:
4974 3824 760 4907 768 2866 2207 3837 2629 2873 1423 1767 1157 1572 1865 2149 563 1518 3874 4044 102...
output:
8302 4115 3501 3048 3744 3986 4561 5379 5041 3938 4517 2956 2109 4089 2658 3298 3260 2754 5152 5415 ...
result:
ok 3824 numbers
Test #4:
score: 10
Accepted
time: 2ms
memory: 1492kb
input:
4926 3730 2602 4091 1320 2793 17 712 1571 4403 3877 4145 4288 4877 2284 3823 2415 4696 2987 4441 212...
output:
2992 5176 6575 2937 3267 3987 6300 3409 5429 4974 5212 5316 4965 5190 5684 6114 3829 4636 4194 3905 ...
result:
ok 3730 numbers
Test #5:
score: 10
Accepted
time: 1ms
memory: 1368kb
input:
3187 4039 789 792 2497 2909 2178 2428 871 1830 30 1679 482 628 2389 2992 107 1180 116 3161 2025 2123...
output:
19 854 1363 3291 3338 3050 2457 2169 4348 4157 3821 3197 2856 3543 3382 3099 3025 3056 3359 3388 330...
result:
ok 4039 numbers
Test #6:
score: 10
Accepted
time: 317ms
memory: 16596kb
input:
498120 466300 147968 147968 397555 397555 46672 46672 189382 189382 396447 396447 262354 262354 1453...
output:
20 39 57 74 88 106 120 137 151 167 182 199 216 231 247 262 277 293 307 323 338 353 367 383 396 412 4...
result:
ok 466300 numbers
Test #7:
score: 10
Accepted
time: 335ms
memory: 16600kb
input:
453080 495815 117597 117597 147384 147384 323399 323399 250557 250557 351263 351263 81702 81702 1802...
output:
20 36 55 72 90 108 125 142 154 171 187 201 216 231 245 259 274 289 302 315 329 344 353 369 380 395 4...
result:
ok 495815 numbers
Test #8:
score: 10
Accepted
time: 576ms
memory: 17620kb
input:
496833 483174 250496 297573 74683 202076 275880 471935 82037 169344 144859 340702 161442 422741 6229...
output:
94172 348979 654328 479729 466454 348843 474892 519874 399089 328879 424953 384125 424572 342987 387...
result:
ok 483174 numbers
Test #9:
score: 10
Accepted
time: 460ms
memory: 17620kb
input:
448194 403135 82684 443461 26235 115906 195077 302474 176092 189983 3656 438870 386099 440867 13803 ...
output:
721573 768040 553258 525489 363440 464997 449858 326402 189013 265204 238438 629273 615263 383209 39...
result:
ok 403135 numbers
Test #10:
score: 10
Accepted
time: 518ms
memory: 17620kb
input:
475006 426104 86652 313013 311456 330183 131352 135536 237738 330903 60054 155047 73108 83759 154754...
output:
452742 483975 475618 298430 231589 210295 76495 422293 333599 388662 706978 465930 369656 604053 370...
result:
ok 426104 numbers
Extra Test:
score: 0
Extra Test Passed