SOJ1728 题解
题意
有一个长度为 的数列 以及一个长度为 的操作序列 。
执行 次操作,第 次操作(从 开始编号)执行
求最终数列。
。
题解
考试题,赛时想了一个巨毒瘤的奇环树+倍增解法,结果 行代码怒调 ,还 R 了一个点。只能 遗憾离场……正解用到了一个挺妙的 trick,但出题人认为很典(www被嘲讽了
先考虑 的情形。若我们将操作每 个分为一组,除最后一组外的所有组都是相同的。暴力一遍,可以得到一个置换,因为置换有结合律,用快速幂可以 解决。其实也可以优化到 ,但没必要。
时,第 组的每个数在 意义下比第 组大 。我们这样考虑:做完第 组后,将数列向左循环移 位,做完剩下的所有组后再移回来。由于操作是 ,结果不变。那么除最后一组外的所有组又相同了。如上操作,最后循环右移 即可。
本文作者:realFish
本文链接:https://www.cnblogs.com/fish07/p/17083878.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步