神秘!在这些排列生成的置换群 \(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 题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

  10. JSOI2016R3 瞎BB题解

    题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...

随机推荐

  1. 九、FreeRTOS学习笔记-列表和列表项

    列表和列表项的简介 列表是 FreeRTOS 中的一个数据结构,概念上和链表有点类似,列表被用来跟踪 FreeRTOS中的任务. 列表项就是存放在列表中的项目 列表相当于链表,列表项相当于节点,Fre ...

  2. windows下python批量更新软件包

    前言 相信很多小伙伴都遇到过python有些软件包版本过低导致无法安装一些模块的问题,刚好我前两天也遇到了,这里写个文章记录一下 一.更新pip版本 打开命令控制面板,输入: python -m pi ...

  3. H5 新增表单

    1.提示占位 placeholder <input type="text" name="userName" placeholder="请输入用户 ...

  4. Uniapp input的v-model问题

    前情 uni-app是我很喜欢的跨平台框架,它能开发小程序,H5,APP(安卓/iOS),对前端开发很友好,自带的IDE让开发体验也很棒,公司项目就是主推uni-app. 坑位 最近在做一个input ...

  5. VLC web(http)控制 (3) 播放控制

    VLC  web(http) 播放控制: 1.如果已经在打开视频 播放和暂停都是:http://127.0.0.1:8080/requests/status.xml?command=pl_pause ...

  6. 切换Docker本地目录

    背景: df -h,发现docker默认的路径在/var/lib下,而且容量即将满掉. 对于欧拉系统来说,目录在/home,需要把docker目前的目录切换到/home下. 解决方法: 1. Dock ...

  7. MeteoInfo-Java解析与绘图教程(十)_JAVA绘制雷达PPI图

    天气雷达的基本要素有很多,特别是双偏振雷达更多,但业务场景经常使用的一般为基本反射率,基本速度这两种要素 接下来我们以基本反射率为例,其他的要素也是一样的,一通百通 首先我们做基本反射率的图需要确定做 ...

  8. HTML 面试题

    .code { background-color: rgba(246, 246, 246, 1); color: rgba(232, 62, 140, 1) } DOCTYPE的作用? DOCTYPE ...

  9. WinDbg: SOSEX 下载,加载和使用帮助

    SOSex 是 SOS 的扩展,由 Steve Johnson 开发,他是微软的一个员工,开发并免费提供了 SOSex for download 的下载,但该软件并不开源. 通常,该扩展不能与其他 D ...

  10. 【报错解决】【Linux】Name or service not known

    # 配置文件位置 /etc/sysconfig/network-scripts/ # nano ifcfg-eth0查看网卡配置,确认dns已配置,且网关已配置 在虚拟机中添加临时路由网关(要与物理主 ...