AGC062

Right Side Character

\(n=|s|\),观察到以下两个性质:

  • \(s_{n}=A\),则\(f(s)_{n-1}=A\),进而答案为\(A\)

  • \(s_{n}=B\)\(\exists i\in [2,n],s_{i-1}s_{i}=BA\),则\(\exists i\in [2,n),f(s)_{i-1}f(s)_{i}=BA\)

    由于最终必然不存在,中间即存在某步使得\(f(s)_{n-1}=A\)

综上,答案为\(B\)的必要条件\(s_{n}=B\)\(\forall i\in [2,n],s_{i-1}s_{i}\ne BA\),且显然充分

简单判定即可,时间复杂度为\(O(n)\)


Split and Insert

考虑将过程逆序,即对于给定的\(\{P_{n}\}\),每次将\(k\)个数放到末尾,最终使得\(P_{i}=i\)

注意到两数的位置关系取决于最后一次恰选择其中一项的操作(若不存在即与初始相同)

\(Q_{P_{i}}=i,S_{i}\)为表示\(i\)操作情况的\(K\)位二进制数,则即要求\(\forall i\in [1,n),(S_{i},Q_{i})<(S_{i+1},Q_{i+1})\)

定义\(f_{l,r,i}\)表示区间\([l,r]\)仅用\(i\)​次操作的答案,则

\[\begin{cases}f_{l,r,0}=[Q_{l}<Q_{l+1}<...<Q_{r}]\\f_{l,r,i}=\min\{f_{l,r,i-1},\min_{j\in [l,r)}f_{l,j,i-1}+f_{j+1,r,i-1}+(r-j)c_{K-i+1}\}\end{cases} \]

暴力实现即可,时间复杂度为\(O(n^{3}K)\)


Mex of Subset Sum

不妨假设\(a_{1}\le a_{2}\le ...\le a_{n}\),并记\(A_{i}=\sum_{j=1}^{i}a_{j}\)

维护\([0,A_{i}]\)中不能被表示的数集合\(T\),转移即\(T'=\{x\mid (x-a_{i}\in T\or x<a_{i})\and (x\in T \or x>A_{i-1})\}\)

将左半部分的条件拆开,即\(T'=\{x\mid x-a_{i}\in T\and ...\}\cup \{x\mid x<a_{i}\and ...\}\)

(其中\(...\)表示右半部分的条件)

后者若大小\(\ge k\)即可直接得到答案,否则即\(|T'|<|T|+k\),进而\(|T|\le nk\)

用set暴力实现即可,时间复杂度为\(O(n^{2}k\log nk)\)


Walk Around Neighborhood

参考这里


Overlap Binary Tree

参考这里


Preserve Distinct

咕咕咕

posted @ 2023-07-02 07:57  PYWBKTDA  阅读(135)  评论(0编辑  收藏  举报