UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#203445#3554. Atkswls1002000ms21756kbC++111.4kb2024-02-25 11:39:052024-02-25 13:11:24

answer

#include<bits/stdc++.h>
using namespace std;
int n, m;
struct node {
	int l, r, ansa, ansb, tag;
} b[2000006];
inline void update(int p) {
	b[p].ansa = b[2 * p].ansa + b[2 * p + 1].ansa;
	b[p].ansb = b[2 * p].ansb + b[2 * p + 1].ansb;
	if (b[p].ansa) b[p].ansa++;
	if (b[p].ansb) b[p].ansb++;
}
inline void push_down(int p) {
	if (b[p].tag) {
		b[2 * p].tag ^= 1, b[2 * p + 1].tag ^= 1;
		swap(b[2 * p].ansa, b[2 * p].ansb);
		swap(b[2 * p + 1].ansa, b[2 * p + 1].ansb);
		b[p].tag = 0;
	}
}
inline void build(int p, int l, int r) {
	b[p].l = l, b[p].r = r;
	if (l == r) {
		b[p].ansa = 1, b[p].ansb = 0;
		return;
	}
	build(2 * p, l, (l + r) >> 1);
	build(2 * p + 1, ((l + r) >> 1) + 1, r);
	update(p);
}
inline void change(int p, int l, int r) {
	if (b[p].l >= l && b[p].r <= r) {
		swap(b[p].ansa, b[p].ansb);
		b[p].tag ^= 1;
		return;
	}
	push_down(p);
	int mid = (b[p].l + b[p].r) >> 1;
	if (r <= mid) change(2 * p, l, r);
	else if (l > mid) change(2 * p + 1, l, r);
	else change(2 * p, l, mid), change(2 * p + 1, mid + 1, r);
	update(p);
}
signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> n >> m;
	int p, q;
	build(1, 1, n);
	for (int i = 1; i <= m; i++) {
		cin >> p >> q;
		change(1, p, q);
		cout << b[1].ansb << "\n";
	}
}
//后面两题都不会做,哭了
//T3 有40pts nL暴力,但我不想写了,就酱吧

Details

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 0ms
memory: 1436kb

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: 1ms
memory: 1592kb

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: 2ms
memory: 1596kb

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: 3ms
memory: 1592kb

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: 3ms
memory: 1432kb

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: 280ms
memory: 21752kb

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: 304ms
memory: 21756kb

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: 498ms
memory: 21756kb

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: 450ms
memory: 21752kb

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: 459ms
memory: 21756kb

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