bzoj1488 图的同构
图的同构
题目描述
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1488
题解
还在搞OI的时候就看过这道题,看的一脸懵逼。
学了群论的相关知识再来看这题,还是一脸懵逼。
后来借助题解知道了做法。
求n个点完全不同的简单无向图的方案数。
对于每条边,存在与不存在等价于黑白染色。
因为涉及到点的置换,边的置换,所以考虑polya定理。
枚举点的置换群的点循环的循环大小
对于同一个点循环内的边循环的大小等于点循环大小/2
对于不同点循环内边循环大小等于两个点循环大小的gcd。
这个手玩一下应该看得出来为什么
所以sum=Σ2^(Σsize[i]/2+Σgcd(size[i],size[j]))
接下来求符合该循环集条件下的边置换的个数,即对应的点置换的个数。
tmp=n!/π( size[i])/(π num[i]!)
其中num[i]表示大小为size[i]的循环节的个数
除掉size[i]可以理解为圆形排列
除掉num[i]!是因为相同大小的循环节会出现重复计算
ans=Σsum*tmp/n!
题解参考的这份:
http://blog.csdn.net/wzq_qwq/article/details/48035455
然后这题也可以手完几个点然后去查OEIS(逃)
双倍经验 bzoj1815
代码
#include<bits/stdc++.h>
#define mod 997
#define N 65
using namespace std;
int n,ans,val[N],s[N],fac[N];int Pow(int a,int b)
{int res=1;while(b){if(b&1)res=res*a%mod;a=a*a%mod;b>>=1;}return res;
}int gcd(int a,int b)
{if(!b)return a;return gcd(b,a%b);
}void dfs(int x,int res,int num)
{if(!res){int sum=0,tmp=1;for(int i=1;i<=x;i++){sum+=s[i]*(s[i]-1)/2*val[i]+val[i]/2*s[i];for(int j=i+1;j<=x;j++)sum+=gcd(val[i],val[j])*s[i]*s[j];}for(int i=1;i<=x;i++)tmp=tmp*fac[s[i]]*Pow(val[i],s[i])%mod;tmp=Pow(tmp,mod-2)*fac[n]%mod;ans=(ans+Pow(2,sum)*tmp)%mod;return;}if(num>n)return;dfs(x,res,num+1);for(int i=1;i*num<=res;i++){val[x+1]=num;s[x+1]=i;dfs(x+1,res-i*num,num+1);}
}int main()
{scanf("%d",&n);fac[0]=1;for(int i=1;i<=n;i++)fac[i]=fac[i-1]*i%mod;dfs(0,n,1);printf("%d\n",ans*Pow(fac[n],mod-2)%mod); return 0;
}
bzoj1488 图的同构相关推荐
- BZOJ1488: [HNOI2009]图的同构
BZOJ1488: [HNOI2009]图的同构 Description 求两两互不同构的含n个点的简单图有多少种. 简单图是关联一对顶点的无向边不多于一条的不含自环的图. a图与b图被认为是同构的是 ...
- USTC 1119 graph 图的同构
USTC 1119 图的同构的严格定义可以参考离散数学:The simple graphs G1=(V1,E1) and G2=(V2,E2)are isomorphic if there exist ...
- [BZOJ1815BZOJ1488]有色图/图的同构(Polya定理)
由于有很多本质相同的重复置换,我们先枚举各种长度的点循环分别有多少个,这个暴搜的复杂度不大,n=53时也只有3e5左右.对于每种搜索方案可以轻易求出它所代表的置换具体有多少个. 但我们搜索的是点置换组 ...
- 离散数学——图论中图的同构的应用
我选择图的同构这块知识点,首先图的同构可以形象的说,若图的结点可以任意挪动位置,而边是完全弹性的,只要在不拉断的条件下,一个图可以变形为另一个图,那么称这两个图同构. 同构是在数学对象之间定义的一类映 ...
- 基于Python实现的图的同构算法
目录 一.概要 1 二.文章结构 1 三.问题描述:图的同构 1 四.判断图同构的算法 2 基于生成全排列序列的算法 2 两种基于深度优先搜索与根据局部匹配进行剪枝的算法 3 基于 canonical ...
- 【图的同构识别】算法设计与分析实验2
计算机科学与工程学院实验报告 课程名称 算法设计与分析 班级 实验内容 实验2:图的同构识别 指导教师 姓名 重剑DS 学号 实验日期 2022.05.19 一.问题描述,含输入.输出数据内容.格式 ...
- HDU 3926 图的同构
Hand in Hand 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3926 Problem Description In order to get ...
- BZOJ 1488 Luogu P4727 [HNOI2009]图的同构 (群论、Burnside引理、组合计数)
题目链接 (Luogu) https://www.luogu.org/problem/P4727 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.ph ...
- BZOJ 1488 Luogu P4727 [HNOI2009]图的同构 (Burnside引理、组合计数)
题目链接 (Luogu) https://www.luogu.org/problem/P4727 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.ph ...
- 洛谷P4727:图的同构计数(Polya引理)(dfs)
解析 <关于我想了半天 dp 结果看题解 dfs 就行这回事> 我就说 gcd\gcdgcd 这玩意 dp 个锤子啊- 拆分数的增长速度远没有想像中那么大,事实上,n=60n=60n=6 ...
最新文章
- laravel5.6 php,Laravel5.6中的队列简单使用
- MySQL 一个连接对应一个数据库
- ​听说,私有云也出新一代了?
- 第10月第25天 java annotation
- 利用 caffe的 python接口测试训练好的 mnist 模型
- 大学生咖啡网页制作教程 表格布局网页模板 学生HTML静态美食网页设计作业成品 简单网页制作代码 学生美食网页作品免费设计
- C++基础(C++Primer学习)
- 图像处理的Dither和Banding
- HTML的简要学习---超链接(待补充)
- 独立站引流技巧和营销思路
- python turtle画动物_用python画简单的动物
- 《Molecular Plant》新思路:比较转录组+比较基因组研究小麦高效氮利用分子机制
- 怎么样防止文档泄密呢?
- 【杰理AC692X】双LINEIN模式做法
- 《成功的原则》超迷你探险系列动画
- oracle物料期初余额,【YOU学吧】NC产品库存管理期初业务详解
- Android Jetpack- Paging3.0的使用
- ADV-166 聪明的美食家
- python3多线程传参_python多线程 怎么传送多个参数
- mysql排列组合实现_排列-组合的代码实现