D9A
题意:定义 ()
是好串。如果
S
S
S 是好串,那么 (SS...S)
也是好串。给定一个括号串
T
T
T,求是
T
T
T 子序列的好串中,字典序第
k
k
k 的那个。
∣
T
∣
≤
150
|T| \leq 150
∣T∣≤150。
当时看到,长度很小。这意味着好串数量肯定小于 15 0 2 / 2 150^2/2 1502/2,实际则远远更少。预处理出所有的好串,排序,然后依次判断是不是 T T T 的子串就行。
样例似乎有错。但是过了。
D9B
题意:给定一个序列 a a a,求区间最大值异或上严格次大值的最大值。 n ≤ 1 0 5 n\leq10^5 n≤105。
原本想着尺取法,然后就需要快速查询区间最大值和次大值,就写了个 ST 表维护 RMQ。中途还写错了一次,在这里记一下写法:
- 最大值直接普通写法。
- 如果左边最大值大于右边最大值,右边最大值就是这个区间的次大值。小于亦然;
- 如果相等,那么这个区间的次大值就是两个区间的次大值取大者。
写完之后发现尺取法挂了,然后才发现这题不能尺取也不能二分。最后写了个 n 2 n^2 n2 的暴力。
出题人应该是想让我们研究个什么性质然后把 n 3 n^3 n3 优化到 n 2 n^2 n2 吧。思路不够数据结构来凑,30 分到手。
D9C
题意:有
n
n
n 个 o
和
m
m
m 个 x
,连续(极长)
k
k
k 个 o
的贡献是
k
2
k^2
k2,连续
k
k
k 个 x
的贡献是
−
k
2
-k^2
−k2,找一个排列让贡献最大。
n
,
m
≤
1
0
5
n,m\leq 10^5
n,m≤105。
想了个 dp。设
f
[
i
]
[
j
]
[
t
]
f[i][j][t]
f[i][j][t] 表示还剩
i
i
i 个 o
,
j
j
j 个 x
,以及上一个连续段是什么字符。直接转移就行,时间复杂度
O
(
n
3
)
O(n^3)
O(n3)。
原本想着拿 40 分部分分的,结果常数小还多跑过了一个点,50 分。
应该是有什么性质的,只是我没找出来。输出方案很有规律。
D9D
题意:一棵边带权的无向树,每个点的”延迟"定义为它到最远的点的距离。选一个树上连通块使得块内延迟极差不超过 D D D。 n ≤ 1 0 5 n \leq 10^5 n≤105。
二合一的感觉啊。只是计算延迟我会 O ( n ) O(n) O(n) 树形 dp,块内极差就不会了。仍然是 O ( n 2 ) O(n^2) O(n2) 算法。
30 分。
Conclusion
期望得分 100+30+40+50=210,实际得分 110。
A 题因为出去做核酸了所以没写,是回来补的。一遍过。也可以算是赛时过了?
考试策略真的很重要。