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 ...
随机推荐
- Java语言的动态性支持
一.脚本语言的支持 JSR 223中规范了在Java虚拟机上运行的脚本语言与Java程序之间的交互方式.JSR 233是JavaSE6的一部分,在Java表中API中的包是javax.scri ...
- echarts中label上下两行展示
如上图展示 series: [ //系列列表 { name: '设备状态', //系列名称 type: 'pie', //类型 pie表示饼图 radius: ['50%', '70%'], //饼图 ...
- PHP之项目环境变量设置
需求 在PHP开发中为了区分线上生产环境还是本地开发环境, 如果我们能通过判断$_SERVER['RUNTIME_ENVIROMENT']为 'DEV'还是'PRO'来区分该多好, 可惜的是$_SER ...
- 简单理解Linux File的操作
类Unix系统是支持多个进程打开同一个文件,进行读写. 得益于类Unix系统对于文件操作的特殊设计. 分为三个数据结构 进程表项:其中包含进程中打开的文件和设备的文件描述符.还包含该文件描述符对应的文 ...
- Vue.js vuex
1.前言 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,它解决了vue中不同组件之间状态共享的问题. 通俗的说,它就是一个带响应式的全局变量管理,它数据的改变会触发相关页面/组件的更 ...
- GraphQL Part IV: 浏览器内的 IDE
只是一个使用,这里不做介绍了.
- MySQL的 安装、配置、卸载
Mysql的安装配置(基于Centos7) 安装mysql数据库 [root@master ~]# wget https://dev.mysql.com/get/mysql57-community-r ...
- Linux打印显示时间
Linux打印显示时间具体使用参数如下: 1.输出当前年月日echo $(date +%F)2.输出当前时间(时分)echo $(date +%R)3.输出当前时间(时分秒)echo $(date + ...
- 解锁4K,Xilinx MPSoC ARM + FPGA高清视频采集与显示方案!
当下,随着数字化多媒体技术以令人惊叹的速度不断演进,高清视频处理成为众多领域关注的焦点.今天为大家分享4K HDMI 高清视频方案,基于Xilinx UltraScale+ MPSoC XCZU7EV ...
- SolidState靶机通关教程及提权
声明!本文章及工具分享仅仅只是供大家学习交流为主,如有任何触犯法律的行为,均与本人及团队无关!!! 工具链接:https://pan.quark.cn/s/33795a10039c 一.靶机搭建 点击 ...