8.25 Day9

75+100+35=210 rk2

T1

直接比较 \(a_{i-1}\)\(a_i\)

如果 \(a_{i-1} < a_i\)限制了x的在他们的最高不同位必须是0

如果 \(a_{i-1} > a_i\)限制了x的在他们的最高不同位必须是1

分位考虑,开两个桶记录,直接暴力修改即可

时间复杂度:\(O(30n)\)

T2

暴搜优化

T3

55->35

没看见有个挡\(l_{max}<=200\)自己卡自己,少了20分

一个朴素的想法,设\(dp_i\)表示\(A_{1...i}\)的最小代价,转移就从前面\(dp_j(j<i)\) 转移,加上\(A_{j+1...i}\)的最小代价

关于最小代价,可以把B插入trie树,每个点记录min_c

时间复杂度:\(O(nl_{max})\)

考虑另一种转移:

枚举前后缀转移,考虑一个固定的\(𝐵_𝑥\),如果\(𝐵_𝑥 [:−𝑗]\)\(𝐴[:𝑖]\)的后缀,则可以以代价\(𝑐_𝑥\)\(𝑑𝑝[𝑖−𝑗]\rightarrow 𝑑𝑝[𝑖]\)。同理,如果\(𝐵_𝑥 [:𝑗]\)\(𝐴[𝑖:]\)的前缀,则可以以代价\(𝑐_𝑥\)\(𝑑𝑝[𝑖]\rightarrow 𝑑𝑝[𝑖+𝑗]\)

我们发现每一段\(𝑗\)都满足二分性质,在前后缀分别求出\(𝑗\)的合法范围,用线段树转移,复杂度\(𝑂(𝑚𝑛 log⁡𝑚+𝐿)\)

将长度大于𝐾的用方法1,其余的用方法2,总复杂度为\(𝑂(𝑚 \frac{𝐿}{𝐾} \log ⁡𝑚+𝑚𝐾)\)
\(𝐾=𝑂(\sqrt{𝐿 \log ⁡𝑚})\),总复杂度为\(𝑂(𝑚\sqrt{𝐿 \log ⁡𝑚 })\)

posted @ 2023-08-25 14:41  Linnyx  阅读(10)  评论(0编辑  收藏  举报