AGC044C - Strange Dance 题解

这个题一年前就该补了………………


首先转化为下标变换,这样本来是值的变换,最终就是个逆。(当然你要觉得值变换好理解我也不拦你)

然后 \(2\leftrightarrow1\) 这玩意可以建个 012Trie 在上面打懒标记,就交换了 \(son_1,son_2\) 之后下传。这样就不用担心什么了。

然后考虑加法怎么在 Trie 上体现。由于加法的进位是从低位往高位的,我们考虑把 Trie 倒着建,低位在上面,这样显然是不影响操作 S 的。反正给我自己想我是想不到,被思维定势了,一般 Trie 正着建是因为要按位贪心。

那么 R 操作就是 \(son_0\) 整体迁移至 \(son_1\)\(son_1\to son_2\),而 \(son_2\) 的变换不只是 \(\to son_0\) 这么简单,它内部还要进位,于是往下走做类似的事情即可,复杂度 \(\mathrm O(n)\)

最终复杂度 \(\mathrm O(qn)\)code

posted @ 2021-04-15 22:28  ycx060617  阅读(128)  评论(0编辑  收藏  举报