[ABC214G]Three Permutations

Three Permutations

题解

很明显,对于排列, p , q p,q p,q,我们可以先将 p p p排成一个有序的排列,再将 q q q置换成与 q q q对应的样子,这并不影响我们的答案,相当于将我们的答案序列置换一下。
此时,对于第 i i i个位置,它不能取 i i i q i q_{i} qi这两个值。考虑一下如果我们现在将值的特殊性去掉,它会变成什么样子。
我们将点 i i i与点 q i q_{i} qi之间连一条有向边,我们最后得到的就是许多个环,如果这样构成的图是等价的,那么两个序列就是等价的。
我们对于同一个环上的点的要求就是它不能选择它自身的值与它连边到达的点的值。

即使转化成了图的形式,直接解出答案依旧是十分困难的,我们可以考虑容斥。
容斥自然容斥的是有多少个点选择它自身的值或它这条有向边到达的点的值。
点的选择对于不同的环之间是独立的,我们先单独考虑一个环。
对于一个环上的点,我们显然可以用 d p dp dp求出,设 d p i , j , 0 / 1 / 2 , 0 / 1 / 2 dp_{i,j,0/1/2,0/1/2} dpi,j,0/1/2,0/1/2表示一条长度为 i i i的链,有 j j j个不合法的选择,链首选择的与它自身/与它相连的点/其他选择的,链尾选择的与它自身/与它相连的点/其他选择的情况数,转移到环直接首尾相连看是否合法即可。
唯一不行的转移就是从 1 1 1转移到 0 0 0,这种情况会让同一个数被选两次,其他情况都是合法的,可以相互转移。
求出一个环上的方案数,环与环之间直接多项式乘法乘起来即可。

设整个图中选择 i i i个点不合法的方案数为 g i g_{i} gi,容易得出答案:
A n s = n ! + ∑ i = 1 n ( − 1 ) i ( n − i ) ! g i Ans=n!+\sum_{i=1}^{n}(-1)^i(n-i)!g_{i} An

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值