cf1553E. Permutation Shift
cf1553E. Permutation Shift
题意:
给出一个1到n的排列,每次可以交换两个数,问在交换最多m次(m <= n/3)之后能不能得到由1 2 3 … n循环右移所得到的的排列,输出所有能得到的排列和循环右移的次数。
数据范围:n <= 3e5
题解:
如何求每次置换操作后的数组?
每次置换操作k相当于b[i]=(i-k+n)%n
我们逆向考虑,对于每次移动k,来判断是否可以通过最多m次操作回到原本排列(原本1到n的排列)。
我们最终的目的是想要n个自环。假设当前b中有t个环
原创
2021-08-10 16:03:52 ·
207 阅读 ·
0 评论