ABC328G 题解

发布时间 2023-11-12 10:27:25作者: liangbowen

blog。剩下几分钟的时候胡出来了,但是时间不够,痛失 AK /dk。


\(N\le22\),显然状压 DP。\(dp_s\) 表示确定 \(s\) 集合的元素所需的代价(这些元素都放在最前面)。

确定了 \(s\) 后,发现会有 \(\operatorname{popcount}(s)\) 个元素堆在前面,那么枚举 \([L,R]\) 接在后面,也就是 \([\operatorname{popcount}(s)+1,\operatorname{popcount}(s)+(R-L+1)]\) 的位置。

枚举 \([L,R]\), 需满足 \(\forall L\le i\le R, i\notin s\)\(dp_{s\cup[L,R]}\gets dp_s+C+\sum\limits_{i=L}^R|a_i-b_{i\text{ 对应的位置}}|\)

直接枚举 \([L,R]\), 时间复杂度 \(O(n^22^n)\)。枚举出 \(L\)\([L,R]\) 可以递推,时间复杂度 \(O(n2^n)\)

code,时间复杂度 \(O(n2^n)\)