专栏文章

题解:AT_agc070_b [AGC070B] Odd Namori

AT_agc070_b题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min9t46y
此快照首次捕获于
2025/12/01 22:54
3 个月前
此快照最后确认于
2025/12/01 22:54
3 个月前
查看原文
安慰自己不要太烦
没有你的我只是不习惯
容斥宇宙题。
考虑题面的三条限制。对于限制一,相当于图是一个内向基环树森林,与长度为 nn 值域为 [1,n][1,n] 的序列构成双射,接下来我们称与当前图对应的序列为 pp
对于限制二我们容易想到容斥:钦定若干环,奇环的容斥系数为 11,偶环的容斥系数为 1-1。这样一个图如果有一个偶环,那么偶环选或不选之间的系数抵消,贡献是 00;一个图如果没有偶环,那么奇环的系数恰好是 2环的数量2^{环的数量},很好!
但是我们暴力枚举若干个环再计数太劣了。我们设钦定在环上的点构成的集合为 SS,若 S2|S|\geq 2,选出编号最小和次小的点 u,vu,v,然后交换 pup_upvp_v
由于交换操作的性质,操作后的图与原图构成双射,而无论是把一个奇环拆成奇环和偶环,还是把两个奇环合并成偶环,容斥系数都恰好 ×1\times -1,所以所有 S2|S|\geq 2 的钦定方案的贡献的和 =0=0
对于 S=1|S|=1 的方案是好求的,放在序列上相当于钦定 pi=ip_{i}=i,答案是 n×nn1=nnn\times n^{n-1}=n^n

考虑有限制三怎么做,我们尝试像上面一样交换 pp 的两个元素构成双射。
还是讨论 SS,希望能通过交换构成双射,又因为容斥系数恰好 ×1\times -1 就能抵消了。
SS 上的点在树上构成了 2\geq 2 个连通块,选出 连通块的根 中编号最小和次小的点 u,vu,v 交换即可。首先由于交换不会改变 SS,也就不会改变 SS 构成 连通块的根 这个集合。然后,操作之后显然仍然满足限制三。
所以只需要考虑 SS 在树上构成 11 个连通块。选出最小的有序对 (u,v)(u,v),满足 fau=fav\text{fa}_u=\text{fa}_v 并交换,与上面同理构成双射。
所以 SS 只能构成一条 祖先-后代 链,设深度最浅的点为 uu,其儿子为 vv,若 puup_u\ne u,交换 pup_upvp_v 同理能构成双射。此时只考虑 pu=up_u=u,再令 uu 为深度第二浅的点,其儿子为 vv……
我们可以一直进行下去,直到 xS,px=x\forall x\in S,p_x=x,此时 SS 内部的方案数就是 11。其他点的答案是 (n1)nS×[1S]nn1(n-1)^{n-|S|}\times [1\notin S]\frac{n}{n-1},因为 p1p_{1} 可以选 nn 个数而其他点由于有父亲只能选 n1n-1 个数。
此时我们可以写出一个 O(n2)O(n^2) 的做法了,暴力枚举这条链即可。我们枚举 SS 最深的点 xx,发现答案只跟 depx\text{dep}_x 有关,所以推导一下发现只需要预处理 i=1d(n1)i\sum_{i=1}^d (n-1)^i 即可。
时间复杂度 O(n)O(n)
我真的忘了
我只剩我一口
在这里 想着你

评论

0 条评论,欢迎与作者交流。

正在加载评论...