Loading

AtCoder Regular Contest 107 C - Shuffle Permutation

算法

容易发现行列的交换操作互不影响

又因为如果 \(a \leftrightarrow b, b \leftrightarrow c\)
那么显然 \(a \leftrightarrow c\)

由此想到把所有交换操作维护连通块, 对于每个连通块内的点, 总方案数就是块大小的阶乘

证明

块中可通过操作取到任意排列
于是得证

代码

略, 十分好写, 节约的时间拿去写分块

总结

交换类的题目, 可以用连通块维护变成排列组合的题目
事实上对于任何有此性质的运算都可以

如果一道题看起来像是概率计数但是没法做
可以考虑在什么条件下可以转化成任意排列的问题

posted @ 2024-10-11 11:54  Yorg  阅读(20)  评论(0)    收藏  举报