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。
珍爱生命,远离抄袭!