【专题】线性判定排列逆序数的奇偶性
排列逆序数的奇偶性是一个十分常见的属性。不同于直接求逆序数,由于排列的性质,这玩意是可以
- 排列两元素对换,逆序数奇偶性改变。
- 排列的逆序数同余
环。
第一点,在大多数线性代数教材中都有所提及。
第二点中的 “环” 的构造方式:按下标
向 连边,或者说,两排列之间连边,必形成若干环(这是因为每个数都出现一次,对应的入/出度数为 )。
定义排列的复合
将 变为 ,下证
经过 后,变为 ,其奇偶性变为 。可表示为 ,其中排列 仅有 两点顺序不同。这过程可以归纳,得到上述结论不难。
为啥是这个数[1]?考虑
这个结论十分有用。
有点记不清了但至少 ABC 出过三四次了,每次看蒋老师代码都觉得“哦,这tm我学过啊”真是十分常见的结论。下附代码:
bool parity = n & 1;
for (int i : p) if (~i) {
for (int j = i; ~j; ) {
std::tie(j, p[j]) = std::tuple{p[j], -1};
}
parity ^= 1;
}
参考 CodeForces Blog: https://codeforces.com/blog/entry/97849 ↩︎
作者:patricky
出处:https://www.cnblogs.com/patricky/p/linear-permutation-parity.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
分类:
算法竞赛 / 常用结论
, 算法竞赛
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)