社区讨论
此种方法建笛卡尔树会TLE?(玄关)
CF1748E Yet Another Array Counting Problem参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lu6n4tw0
- 此快照首次捕获于
- 2024/03/25 15:42 2 年前
- 此快照最后确认于
- 2024/03/25 15:49 2 年前
一开始我的写法是:
CPPfor(int i=1;i<=n;i++) {
while(top && p[stk[top]]<p[i]) top--;
if(!top) ls[i]=stk[top+1];
else ls[i]=rs[stk[top]],rs[stk[top]]=i;
stk[++top]=i;
}
这会TLE。
改成第二篇的写法:
CPPfor (int i = 1; i <= n; i++) {
int top = cnt;
while (top && p[s[top]] < p[i]) --top;
if (top) rc[s[top]] = i;
if (top < cnt) lc[i] = s[top + 1];
s[cnt = ++top] = i;
}
就不会有问题。
请问TLE的原因是死循环还是刻意去卡。
附上#2的部分样例:
Input:
LATEX1000
2 4
1 1
2 4
1 2
3 4
1 1 1
3 4
1 1 2
3 4
1 2 1
3 4
1 2 3
3 4
2 1 2
4 4
1 1 1 1
4 4
1 1 1 2
4 4
1 1 2 1
4 4
1 1 2 3
4 4
1 2 1 1
4 4
1 2 1 2
4 4
1 2 1 3
4 4
1 2 3 1
4 4
1 2 3 4
4 4
2 1 1 2
4 4
2 1 2 1
4 4
2 1 2 3
4 4
2 2 1 2
4 4
3 1 2 3
5 4
1 1 1 1 1
5 4
1 1 1 1 2
5 4
1 1 1 2 1
5 4
1 1 1 2 3
5 4
1 1 2 1 1
5 4
1 1 2 1 2
5 4
1 1 2 1 3
5 4
1 1 2 3 1
5 4
1 1 2 3 4
5 4
1 2 1 1 1
5 4
1 2 1 1 2
5 4
1 2 1 1 3
5 4
1 2 1 2 1
5 4
1 2 1 2 3
5 4
Output:
LATEX10
6
20
10
20
4
10
35
15
35
5
45
25
10
15
1
15
30
5
15
5
56
21
54
6
81
46
13
19
1
84
39
18
78
8
38
2
39
36
21
3
4
14
21
48
6
63
33
12
19
1
21
42
6
21
6
12
18
1
6
6
1
84
28
77
7
127
73
16
23
1
154
73
24
146
11
50
2
73
46
27
3
4
27
140
56
28
129
10
69
3
168
90
20
31
1
92
54
6
8
56
112
10
56
70
34
6
68
13
3
12
34
10
6
17
34
51
2
17
17
3
28
70
7
105
57
15
23
1
112
49
21
98
9
46
...
回复
共 0 条回复,欢迎继续交流。
正在加载回复...