UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#203792#2850. 小明的套娃tkswls100698ms10648kbC++111.6kb2024-03-21 10:43:152024-03-21 17:10:09

answer

#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
int n, m;
struct node {
	int r, h, name;
} b[200005], ques[200005], a[200005];
int ans[200005], ls[200005];
inline bool comp1(node p, node q) {
	return (p.h == q.h) ?  (p.r > q.r) : (p.h < q.h);
}
inline bool comp2(node p, node q) {
	return (p.r == q.r) ? (p.name < q.name) : (p.r > q.r);
}
int t[200005];
inline int lowbit(int p) {
	return p & -p;
}
inline void add(int p, int q) {
	while (p <= n) {
		t[p] = max(t[p], q);
		p += lowbit(p);
	}
}
inline int query(int p) {
	int cnt = 0;
	while (p >= 1) {
		cnt = max(cnt, t[p]);
		p -= lowbit(p);
	}
	return cnt;
}
signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		cin >> b[i].r >> b[i].h;
	}
	sort(b + 1, b + n + 1, comp1);
	for (int i = 1; i <= m; i++) {
		cin >> ques[i].r >> ques[i].h;
		ques[i].name = i;
	}
	for (int i = 1; i <= n; i++) {
		ls[i] = b[i].h;
		a[i] = b[i], a[i].name = i;
	}
	ls[n + 1] = 1000000001;
	sort(a + 1, a + n + 1, comp2);
	sort(ques + 1, ques + m + 1, comp2);
	int rr = 1;
	a[n + 1].r = -1;
	while (rr <= m && ques[rr].r > a[1].r) {
		ans[ques[rr].name] = query(upper_bound(ls + 1, ls + n + 2, ques[rr].h) - ls - 1);
		rr++;

	}
	int op;
	for (int i = 1; i <= n; i++) {
		op = query(a[i].name);
		add(a[i].name, op + 1);
		while (rr <= m && ques[rr].r > a[i + 1].r) {
			ans[ques[rr].name] = query(upper_bound(ls + 1, ls + n + 2, ques[rr].h) - ls - 1);
			rr++;
		}
	}
	for (int i = 1; i <= m; i++) {
		cout << ans[i] << "\n";
	}
}

详细

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

Test #1:

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

input:

50 49
811966738 378632711
986631770 389425472
375285328 507732172
994103075 304389409
446789928 4873...

output:

5
8
7
3
9
6
11
3
5
7
4
4
10
4
8
8
5
6
7
12
7
5
7
3
2
9
5
2
11
11
4
5
3
5
6
2
3
4
3
7
9
2
8
3
8
11
4
...

result:

ok 49 lines

Test #2:

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

input:

50 49
567055707 58892634
737313670 991420259
161015631 678562871
462848177 289392886
895953827 41187...

output:

3
9
11
1
2
3
8
8
0
6
8
8
1
9
5
3
6
2
7
3
7
8
3
4
5
5
0
1
3
1
4
1
3
5
7
8
5
6
8
5
9
5
1
4
8
9
5
3
10

result:

ok 49 lines

Test #3:

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

input:

50 49
930211120 235424114
525123346 770495521
470434976 481200865
390389055 83279238
249662298 28018...

output:

7
4
3
3
7
10
8
3
6
10
6
10
6
9
10
4
0
10
5
7
7
9
8
1
10
7
8
5
6
9
6
3
5
2
0
0
2
0
1
0
5
8
0
5
5
0
7
...

result:

ok 49 lines

Test #4:

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

input:

50 49
941295973 391152373
358083775 170525922
836118232 123805832
474220117 522716583
100518885 8771...

output:

7
5
4
5
5
2
5
4
6
2
1
5
9
1
7
6
6
5
7
5
7
6
0
1
2
2
6
1
8
7
8
5
7
5
7
4
5
10
4
5
4
2
7
8
6
2
11
4
4

result:

ok 49 lines

Test #5:

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

input:

50 49
61191973 564354058
512787694 852933636
641876502 275395669
428982518 796560030
397182165 57002...

output:

4
5
11
12
2
9
8
11
2
4
3
6
2
1
4
2
2
2
5
3
3
2
6
8
6
7
3
5
6
10
3
1
11
0
6
1
4
1
5
2
1
8
9
8
13
6
4
...

result:

ok 49 lines

Test #6:

score: 10
Accepted
time: 3ms
memory: 1428kb

input:

3000 2999
41979397 323635534
161588038 131873447
307913371 46256784
858454515 14084282
786988666 668...

output:

35
29
23
73
57
28
80
29
26
74
34
21
19
50
34
34
31
43
52
53
31
94
35
36
71
42
76
20
30
3
23
43
40
65...

result:

ok 2999 lines

Test #7:

score: 10
Accepted
time: 5ms
memory: 1428kb

input:

3000 2999
277515933 56610884
417512091 340657915
451278245 969080762
314665213 245045004
670013317 5...

output:

90
34
67
59
95
57
24
49
50
96
81
37
28
30
39
72
45
62
43
35
40
85
30
2
25
40
58
40
51
42
83
57
72
54...

result:

ok 2999 lines

Test #8:

score: 10
Accepted
time: 306ms
memory: 10648kb

input:

200000 199999
127483569 579735802
233136777 229310663
10252697 513352468
706869872 646909474
8212017...

output:

530
373
243
400
422
213
652
171
756
113
596
186
320
509
614
540
509
50
467
381
534
261
558
421
428
1...

result:

ok 199999 lines

Test #9:

score: 10
Accepted
time: 181ms
memory: 10644kb

input:

200000 199999
267403501 433759481
384127363 607584990
143554167 955322994
326347114 247979222
474240...

output:

509
321
504
170
483
642
222
735
80
539
327
653
323
421
772
549
487
637
740
122
562
561
123
278
57
24...

result:

ok 199999 lines

Test #10:

score: 10
Accepted
time: 203ms
memory: 10648kb

input:

200000 199999
713715470 129348179
899500867 428136001
420930115 662782322
149776097 504795520
663272...

output:

707
193
225
732
6
827
321
415
130
563
353
538
647
180
467
588
524
750
257
271
135
649
63
562
309
324...

result:

ok 199999 lines