CF1704H1题解
做法来自官方题解。
首先,假设 \(b\) 是固定的,计算不同 \(a\) 的数量。
可以发现如下性质:
- 如果 \(b_i\neq i\),说明 \(i\) 被 \(b_i\) 占领,一定有 \(a_{b_i}=i\)。
- 如果 \(b_i=i\),意味着对于所有 \(a_j=i\),\(j\) 攻击前已经被占领,那么一定有 \(b_j\neq j\)。
我们对于所有 \(b_i\neq i\),\(i\) 向 \(b_i\) 连一条有向边,此时如果有环,一定无解。这样整个图就由若干条链构成,链尾就是所有 \(b_i=i\) 的点,一定有解。
举个例子,对于 \(5 \rightarrow 2 \rightarrow 1\rightarrow 4 \rightarrow3\),我们可以这么安排进攻顺序:\(2\) 去攻占 \(5\),\(1\) 去攻占 \(2\),\(4\) 去攻占 \(1\),\(3\) 去攻占 \(4\)。而如果有环,无论选哪个开始进攻,都会使一人在进攻前自己城堡被占领,无法攻占指定城堡。
根据性质 \(1\) ,这些链除了链头,其余 \(a\) 都是固定的。对于链长大于 \(1\) 的链头,他没有占领任何一个城堡,它的 \(a\) 可以是除本身外的任何值,因为按照例子里的攻击顺序,我们可以让他在攻击前失去城堡,这样他无法进攻,任何 \(a\) 都不会对结果有影响。而如果链长为 \(1\),根据性质 \(2\),他的 \(a\) 不能是其他链的链尾。
计数时,枚举链长大于 \(1\) 的个数和链长为 \(1\) 的个数,组合数算算就好了。
浙公网安备 33010602011771号