Loading

[ARC071E] TrBBnsformBBtion

前言

模拟赛 \(\rm{T2}\) , 这下真是黄了
赛场偶遇 \(\rm{div \ 2} \ C\) , 本来就战胜不了

思路

观察 \(\rm{subtask \ 2}\) 可知, 如果全为 A 的串之间长度相差为 \(3\) 的倍数, 那么可以互相转化

继续观察
通过一些手模, 你发现
BA \(\to\) AAA, AAA \(\to\) BBBBA \(\to\) BA
BAAA \(\to\) B, B \(\to\) AA \(\to\) BBA \(\to\) BAAA
BBBAAA \(\to\) BBB, BBB \(\to\) BAAAA \(\to\) BBBAAA

你发现一个变换一定可以通过另一种方式变换回来

  • 对于 A \(\to\) BB \(\to\) AAAA , 相当于自增 \(3\) 位, B \(\to\) AA \(\to\) BBBB 同理
  • 考虑删除操作显然相当于自减 \(3\)
  • 考虑 A \(\to\) BB \(\to\) BAA , 相当于自增 \(1\) 位, 给另外一个字符增 \(1\) 位, B \(\to\) AA \(\to\) ABB 同理
  • 考虑 BAA \(\to\) AAAA \(\to\) A , 相当于自减 \(1\) 位, 给另外一个字符减 \(1\) 位, ABB \(\to\) BBBB \(\to\) B 同理

观察发现任何一种操作都可以被上面这几种操作概括, 你注意到上面这几种操作都是可逆的, 这是一个重要的性质

因为可逆, 想到只要能把两个串串同时变成一个串串, 即可, 所以先把两个串串都变成以 A 组成的串串, 然后同 \(\rm{subtask \ 2}\) 处理即可


另外一种思考方式:
考虑 \(\rm{subtask \ 3}\) , 你发现可逆操作可以直接对两个串串做变换, 于是想到还是把 \(T\) 串变成以 A 组成的串串, 进一步想到把 \(S, T\) 都变成以 A 组成的串串, 结束

总结

操作类问题可以考虑找可逆性
有了这个性质就可以把问题简化成变换到同一种形式

posted @ 2025-01-14 16:00  Yorg  阅读(17)  评论(0)    收藏  举报