【UNR #4】序列妙妙值
考虑我们有 \(40\) 分的 \(O(n^2k)\) 暴力,是显然的。
考虑 \(20\) 的 \(a_{i} < 2^8\),考虑“去除不影响转移代价的状态。考虑到底是什么影响了转移的代价?(主条目:性质的发现)”,发现是 \(s_{i}\) 和 \(s_{j}\) 影响了转移的代价,那么考虑将所有 \(s_{i}\) 相等的归为一个状态,取 \(f_{i}\) 的最大值。时间复杂度 \(O(nk+nkV)\)。
实际上原问题是数据结构题,每次更新一个位置上的最大值,和询问区间通过某个 \(O(1)\) 的函数计算后的最大值。
询问是 \(O(V)\) 的,而修改只有 \(O(1)\),考虑平衡复杂度。
考虑若修改的复杂度为 \(O(T)\),即询问的复杂度猜想为 \(O(\frac{V}{T})\)。此时 \(T=\sqrt{V}\) 平衡。
下列 \(A_{i},B_{i}\) 表示前 \(8\) 位和后 \(8\) 位。
我们记录转移给的 \(s_{i}\) 的前 \(A_{i}\) 为 \(b\) 的所有 \(j(B_{j}=c)\),\(s_{j}+f_{j}+(b \oplus A_{j})\) 的最大值为 \(f_{b,c}\)。
然后对于 \(i\) 的询问,只需要枚举 \(c\) 的值,然后从 \(f_{A_{i},c}\) 转移,代价为 \((c \oplus B_{i})\),时间 \(O(\sqrt{V})\),记为 \(ans\)。
然后询问后重新修改操作,枚举 \(b\) 然后从 \(ans\) 转移,代价为 \(ans+b \oplus A_{i}\)。

浙公网安备 33010602011771号