蓝书(算法竞赛进阶指南)刷题记录——CH3602 & 洛谷4778 Counting Swaps(计数DP)
题目:CH3602/luogu4778.题目大意:给定一个长度为nnn的排列,询问有多少种方法可以在交换次数最少的情况下把原序列变成递增序列.1≤n≤1051\leqn\leq10^51≤n≤105.我们发现最后序列一定是1,2,...,n1,2,...,n1,2,...,n,那么考虑把每个位置上的数向它最后应该在的位置连一条边,那么我们会得到一张图.很明显每次可以把两条边的起始点交换,且目标为把