【题解】ABC214 G - Three Permutations
题意:给定两个排列 p p p, q q q ,求排列 r r r 的方案数,满足任意 r i ≠ p i r_i\ne p_i ri=pi 并且 r i ≠ q i r_i\ne q_i ri=qi 。 n < = 3000 n<=3000 n<=3000 。
solution:
恶心题。
atcoder 就喜欢考置换和字符串计数。
容斥 + 计数dp + 图论。
考虑对每个 i 位置,(p[i],q[i]) 之间连一条边。不同的环之间是独立的。
考虑 dp[i][j][0/1/2][0/1/2] 表示 环上前 i 个点,撞了 j 个位置,s1 是第一个状态,s2 是第二个状态,0 表示没选,1 表示往左,2 表示往右。
考虑三种转移:
- i+1 不选,dp[i][j][s1][s2]->dp[i+1][j][s1][0]
- i+1 向左,dp[i][j][s1][s2]->dp[i+1][j+1][s1][1] (s2 \ne 2)
- i+1 向右,dp[i][j][s1][s2]->dp[i+1][j+1][s1][2]
这个时间复杂度 O ( 27 n 2 ) O(27n^2) O(27n2) 。当然对于所有的环必须 s1=1 和 s2=2 不同时成立。
最后把它破成链来处理,在环的交界处讨论一下即可。
__EOF__

本文链接:https://www.cnblogs.com/cqbzly/p/17530281.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」