图的同构

题目描述
传送门: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 图的同构相关推荐

  1. BZOJ1488: [HNOI2009]图的同构

    BZOJ1488: [HNOI2009]图的同构 Description 求两两互不同构的含n个点的简单图有多少种. 简单图是关联一对顶点的无向边不多于一条的不含自环的图. a图与b图被认为是同构的是 ...

  2. USTC 1119 graph 图的同构

    USTC 1119 图的同构的严格定义可以参考离散数学:The simple graphs G1=(V1,E1) and G2=(V2,E2)are isomorphic if there exist ...

  3. [BZOJ1815BZOJ1488]有色图/图的同构(Polya定理)

    由于有很多本质相同的重复置换,我们先枚举各种长度的点循环分别有多少个,这个暴搜的复杂度不大,n=53时也只有3e5左右.对于每种搜索方案可以轻易求出它所代表的置换具体有多少个. 但我们搜索的是点置换组 ...

  4. 离散数学——图论中图的同构的应用

    我选择图的同构这块知识点,首先图的同构可以形象的说,若图的结点可以任意挪动位置,而边是完全弹性的,只要在不拉断的条件下,一个图可以变形为另一个图,那么称这两个图同构. 同构是在数学对象之间定义的一类映 ...

  5. 基于Python实现的图的同构算法

    目录 一.概要 1 二.文章结构 1 三.问题描述:图的同构 1 四.判断图同构的算法 2 基于生成全排列序列的算法 2 两种基于深度优先搜索与根据局部匹配进行剪枝的算法 3 基于 canonical ...

  6. 【图的同构识别】算法设计与分析实验2

    计算机科学与工程学院实验报告 课程名称 算法设计与分析 班级 实验内容 实验2:图的同构识别 指导教师 姓名 重剑DS 学号 实验日期 2022.05.19 一.问题描述,含输入.输出数据内容.格式 ...

  7. HDU 3926 图的同构

    Hand in Hand 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3926 Problem Description In order to get ...

  8. BZOJ 1488 Luogu P4727 [HNOI2009]图的同构 (群论、Burnside引理、组合计数)

    题目链接 (Luogu) https://www.luogu.org/problem/P4727 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.ph ...

  9. BZOJ 1488 Luogu P4727 [HNOI2009]图的同构 (Burnside引理、组合计数)

    题目链接 (Luogu) https://www.luogu.org/problem/P4727 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.ph ...

  10. 洛谷P4727:图的同构计数(Polya引理)(dfs)

    解析 <关于我想了半天 dp 结果看题解 dfs 就行这回事> 我就说 gcd⁡\gcdgcd 这玩意 dp 个锤子啊- 拆分数的增长速度远没有想像中那么大,事实上,n=60n=60n=6 ...

最新文章

  1. laravel5.6 php,Laravel5.6中的队列简单使用
  2. MySQL 一个连接对应一个数据库
  3. ​听说,私有云也出新一代了?
  4. 第10月第25天 java annotation
  5. 利用 caffe的 python接口测试训练好的 mnist 模型
  6. 大学生咖啡网页制作教程 表格布局网页模板 学生HTML静态美食网页设计作业成品 简单网页制作代码 学生美食网页作品免费设计
  7. C++基础(C++Primer学习)
  8. 图像处理的Dither和Banding
  9. HTML的简要学习---超链接(待补充)
  10. 独立站引流技巧和营销思路
  11. python turtle画动物_用python画简单的动物
  12. 《Molecular Plant》新思路:比较转录组+比较基因组研究小麦高效氮利用分子机制
  13. 怎么样防止文档泄密呢?
  14. 【杰理AC692X】双LINEIN模式做法
  15. 《成功的原则》超迷你探险系列动画
  16. oracle物料期初余额,【YOU学吧】NC产品库存管理期初业务详解
  17. Android Jetpack- Paging3.0的使用
  18. ADV-166 聪明的美食家
  19. python3多线程传参_python多线程 怎么传送多个参数
  20. mysql排列组合实现_排列-组合的代码实现

热门文章

  1. 华佗穿越来教程序员睡觉
  2. ICMP协议和ARP协议
  3. 使用WebService获取第三方服务数据
  4. 简单的Python爬虫刷访问量程序
  5. 软件项目架构简单总结
  6. padavan固件获取网络地图中的客户端状态
  7. “程序已停止工作”问题的解决方法,停止解决方法
  8. 华为云、百度、斗鱼的技术专家聚到一起在探讨什么?
  9. 编程语言和脚本语言是什么
  10. UEFI启动模式下的WIN10系统迁移指南