8.25 Day9

发布时间 2023-08-25 14:48:05作者: Linnyx

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 ⁡? })\)