看来还是练题少了
这些套路都不知道
(其实就T1该拿的分拿不到)
T1 全连
传送门被老伏抓走了
一眼望去DP,没有后效性
然后发现加的时候不能有效查询前面点是否都能加(考虑前面两点互相矛盾)
然后就懒得码了
实际上
Θ
(
n
3
)
\Theta(n^3)
Θ(n3)还是有25pts的
😭
正解
记忆化记录一个
f
i
f_i
fi表示前
i
i
i个音符选择
i
i
i时最大就行了,再记一维选不选要把问题搞复杂
考虑前面两点互相矛盾,
j
≤
i
−
t
i
j\le i-t_i
j≤i−ti且
j
+
t
j
≤
i
j+t_j\le i
j+tj≤i才能转移
发现这是个二维偏序,而且
i
i
i天然递增
二维偏序:
(
j
+
t
j
,
j
)
;
(
i
,
i
−
t
j
)
→
(
(
i
−
t
j
)
+
t
j
,
i
−
t
j
)
(j+t_j,j);(i,i-t_j)\to ((i-t_j)+t_j,i-t_j)
(j+tj,j);(i,i−tj)→((i−tj)+tj,i−tj)
那按
j
+
t
j
j+t_j
j+tj扔进树状数组里面去求一个前缀和最大值就行了
当然还要一个堆,用来存已经走过的点,看能不能更新现在的贡献
T2 Copy
后缀自动机
山姆大叔我不喜欢你
T3 Diff
网络流我来啦!!!