P10353 [PA2024] Grupa permutacji 题解
神秘!在这些排列生成的置换群 \(G\) 里,若 \(\exists \pi \in G\) 使得 \(\pi_i=k,\pi_j=l\),则所有这些 \((k,l)\) 被同样数量的 \(\pi\in G\) 通过前述方法得出。
证明:设 \(\pi(i,j)=(k,l),\pi'(i,j)=(k',l')\)(意义前述),则 \(\pi^{-1}\circ \pi'(k,l)=(k',l')\),这表明 \((k',l')\) 的方案数不少于 \((k,l)\),因为每个 \((k,l)\) 方案可以复合 \(\pi^{-1}\circ \pi'\) 得到 \((k',l')\) 方案。对于所有二元组对这都成立,因此所有方案数相等。
因此我只需统计连通信息,尝试选择更少的能产生同样连通性的排列。考察一个连通块内部,就是需要 \(S_n\) 的更少联通排列。考虑随机在 \(S_n\) 里选排列,其生成的循环如果不是大小全部相同(可能性极小),那么跨循环之间的点对已经连通;而循环最大大小很有可能是 \(n\) 的\(0.6\sim 0.7\) 倍。因此我大概只需要 \(\log\) 次选择可以连通所有点(在说啥,,)。
因此我只需随机大约 \(\log\) 次,每次做多次随机决定是否复合某个给定排列即可。把这些拿出来求连通块即可。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=3e3+5,lim=24,mod=1e9+7;
int ans=0,n,k,b[maxn],vis[maxn*maxn];
struct perm{int p[maxn];}S[maxn];
inline perm operator ^(const perm &A,const perm &B){
perm C;
for(int i=1;i<=n;i++)C.p[i]=A.p[B.p[i]];
return C;
}
mt19937 rng(time(0));
int Fa[maxn*maxn],A[maxn*maxn],B[maxn*maxn],inv[maxn*maxn*2];
int id(int i,int j){return (i-1)*n+j;}
int Find(int x){return x==Fa[x]?x:Fa[x]=Find(Fa[x]);}
int qp(int a,int b){
if(b==0)return 1;
int T=qp(a,b>>1);T=T*T%mod;
if(b&1)T=T*a%mod;
return T;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>k;
for(int i=1;i<=k;i++)for(int j=1;j<=n;j++)cin>>S[i].p[j];
for(int i=1;i<=n*n;i++)Fa[i]=i;
for(int i=1;i<=lim;i++){
perm I;for(int j=1;j<=n;j++)I.p[j]=j;
for(int j=1;j<=k;j++)if(rng()&1)I=I^S[j];
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)Fa[Find(id(i,j))]=Find(id(I.p[i],I.p[j]));
}
for(int i=1;i<=n*n*2;i++)inv[i]=qp(i,mod-2);
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)A[Find(id(i,j))]+=i<j,B[Find(id(i,j))]+=i>j;
for(int i=1;i<=n*n;i++)if(Find(i)==i)(ans+=(A[i]*B[i])%mod*inv[A[i]+B[i]])%=mod;
cout<<ans<<endl;
return 0;
}
P10353 [PA2024] Grupa permutacji 题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- Displaying XML in a Swing JTree
Overview It seems obvious enough: You have an XML document or fragment. XML is hierarchical. A Swing ...
- 逆向WeChat(八)
上一篇逆向WeChat(七)是逆向微信客户端本地数据库相关事宜. 本篇逆向微信客户端本地日志xlog相关的事宜. 本篇在博客园地址https://www.cnblogs.com/bbqzsl/p/18 ...
- uni-app小程序(快手、抖音)getCurrentPages使用坑位记录
前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,公司项目就是主推uni-app. 坑位 最近在做一个 ...
- manim边学边做--渐变生长
本篇介绍Manim中的渐变生长类的动画. 这类动画的特点是可以清晰地展示图形的生成过程.物体的运动变化,帮助我们更好地理解抽象概念和复杂结构. 渐变生长类的动画的主要有: GrowArrow:让箭头从 ...
- NVM管理多个Node版本
在项目中,我们常常会遇到node版本问题的一些报错,像是vue 3需要node10以上版本,不同的 node-sass 版本需要安装不同的 node.js 版本,为了统一管理node版本,我们需要用 ...
- 【Amadeus原创】docker中修改wordpress上传文件大小
1,进入docker 2,cp php.ini 3, cd到目录 [root@3 ~]# docker exec -it wordpress /bin/bash root@1d8a4fbdaa6b ...
- 龙哥量化:AI时代到来,百度的文心一言能AI选股吗,让AI写一个选股公式20日涨幅>=30%,AI弱智,垃圾。在通达信测试对比一下
如果您需要代写技术指标公式, 请联系我. 龙哥QQ:591438821 龙哥微信:Long622889 选股要求:20日涨幅>=30% 首先看我写的 HH:=HHV(H,20); LL:=LLV ...
- Qt编写安防视频监控系统22-摄像机搜索
一.前言 摄像机搜索模块是后面新增加的,这个模块很有必要,一开始做视频监控系统的时候,那时候还没有研究出来一套纯Qt底层通信的onvif类,也就前几个月搞出来了,支持搜索设备信息和云台控制,所以马上加 ...
- IM开发干货分享:我是如何解决大量离线消息导致客户端卡顿的
1.引言 好久没写技术文章了,今天这篇不是原理性文章,而是为大家分享一下由笔者主导开发实施的IM即时通讯聊天系统,针对大量离线消息(包括消息漫游)导致的用户体验问题的升级改造全过程. 文章中,我将从如 ...
- 即时通讯技术文集(第19期):IM架构设计基础知识合集 [共13篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第19 期. [-1-] 微信后台基于时间序的新一代海量数据存储架构的设计实践 [链接] htt ...