时间安排
7
:
50
−
8
:
20
7:50-8:20
7:50−8:20 把四道题都看了一遍,T1的暴力很好写,T2应该是Manacher和构造,T3有dp的思路,T4是个数据结构。
8
:
20
−
9
:
10
8:20-9:10
8:20−9:10 我先写的是T3,我最开始的想法是设
f
i
,
j
,
k
f_{i,j,k}
fi,j,k 表示考虑完前
i
i
i 个,一共买了
j
j
j 个,总价值为
k
k
k 的方案数,但是
j
j
j 和
k
k
k 很大,所以我考虑让
k
k
k 表示平均值,然后dp转移。
9
:
10
−
9
:
50
9:10-9:50
9:10−9:50 对于T4,其实不难看出就是在判断下标为奇数和偶数的值都有序后总序列是否有序,我的想法是维护两个平衡树,然后修改是
O
(
l
o
g
n
)
O(log\,n)
O(logn) 的,然后在维护一个flag表示是否满足条件,但是码了半天平衡树没码对,就先写了个暴力就去看T1了。
9
:
50
−
10
:
40
9:50-10:40
9:50−10:40 对于T1,不难想到原本的方案数为
2
m
2^m
2m,但是可能会出现各种情况,比如一边为
1
1
1 或
n
n
n,或者在同一个块内的同一方向,所以我的思路是统计不合法情况然后容斥,但不太会动态维护序列。
10
:
40
−
11
:
30
10:40-11:30
10:40−11:30 T3我的想法是先Manacher求出回文串,然后对于每一个回文串一定要分开,我是从中心的位置分开的,然后考虑后面的回文串会减小,然后从前到后维护回文串长度数组
p
p
p 即可。
11
:
30
−
12
:
00
11:30-12:00
11:30−12:00 又去看了看T4的平衡树,改到最后太乱了就打算重构,但时间不太够。
12
:
00
−
12
:
10
12:00-12:10
12:00−12:10 提交。
赛后总结
T1
T1还是挂分了,挂了5分,最后判断的时候不应该从 1 1 1 到 n n n 枚举,应该在开一个数组记录所有的位置。
T2
T2我想的复杂了,我想的是有一个回文串就断一次,其实不是没有回文串,只不过分出来的一段不是而已,最多3段就行,然后一堆细节搞到自闭。
T3
T3还是没想到可以转化为和为0的情况。
T4
T4主要还是在于一直想着把下标为奇数和偶数的分开来维护,导致维护起来很麻烦。