[HNOI2009]图的同构
Description
求两两互不同构的含n个点的简单图有多少种。
简单图是关联一对顶点的无向边不多于一条的不含自环的图。
Input
输入一行一个整数N,表示图的顶点数,0<=N<=60
Output
输出一行一个整数表示含N个点的图在同构意义下互不同构的图的数目,答案对997取模。
Sample Input
1
输入2
2
输入3
3
Sample Output
1
输出2
2
输出3
4
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long lol;
int Mod=;
lol n,A[],ans,fac[],cnt,num[],p[];
int gcd(int a,int b)
{
if (b==)
return a;
return gcd(b,a%b);
}
lol qpow(lol x,lol y)
{
lol res=;
while (y)
{
if (y&) res=(res*x)%Mod;
x=(x*x)%Mod;
y/=;
}
return res;
}
void dfs(int now,int left)
{int i,j;
lol sum1=,sum2=;
if (left==)
{
for (i=;i<=cnt;i++)
{
sum1+=((num[i]-)*num[i]/)*p[i]+p[i]/*num[i];
for (j=i+;j<=cnt;j++)
sum1+=num[i]*num[j]*gcd(p[i],p[j]);
sum2=sum2*fac[num[i]]*qpow(p[i],num[i])%Mod;
}
sum2=fac[n]*A[sum2%Mod];
ans=(ans+sum2*qpow(,sum1)%Mod)%Mod;
return;
}
if (now>left) return;
dfs(now+,left);
for (i=;i*now<=left;i++)
{
cnt++;
p[cnt]=now;
num[cnt]=i;
dfs(now+,left-i*now);
cnt--;
}
}
int main()
{int i;
cin>>n;
A[]=;A[]=;
for (i=;i<=;i++)
A[i]=((Mod-Mod/i)*A[Mod%i])%Mod;
fac[]=;
for (i=;i<=;i++)
fac[i]=(fac[i-]*i)%Mod;
dfs(,n);
for (i=;i<=n;i++)
ans=ans*A[i]%Mod;
cout<<ans;
}
[HNOI2009]图的同构的更多相关文章
- 【BZOJ1488】[HNOI2009]图的同构(Burside引理,Polya定理)
[BZOJ1488][HNOI2009]图的同构(Burside引理,Polya定理) 题面 BZOJ 洛谷 题解 求本质不同的方案数,很明显就是群论这套理论了. 置换一共有\(n!\)个,考虑如何对 ...
- bzoj1488[HNOI2009]图的同构
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1488 1488: [HNOI2009]图的同构 Time Limit: 10 Sec M ...
- bzoj1488 [HNOI2009]图的同构 Burnside 引理
题目传送门 bzoj1488 - [HNOI2009]图的同构 bzoj1815 - [Shoi2006]color 有色图(双倍经验) 题解 暴力 由于在做题之前已经被告知是 Burnside 引理 ...
- BZOJ 1488: [HNOI2009]图的同构 polay
题意:两个图AB同构:把A的顶点重新编号后与B一模一样.求n个顶点的图一共有多少个?(同构的算一种) 思路:边有n*(n-1)/2,这些边可以有可以没有,所以等同于边的颜色有两种.然后将n划分成循环节 ...
- BZOJ 1488: [HNOI2009]图的同构 [Polya]
完全图中选出不同构的简单图有多少个 上题简化版,只有两种颜色....直接copy就行了 太诡异了,刚才电脑上多了一个不动的鼠标指针,然后打开显卡管理界面就没了 #include<iostream ...
- [bzoj1488][HNOI2009]图的同构——Polya定理
题目大意 求两两互不同构的含n个点的简单图有多少种. 简单图是关联一对顶点的无向边不多于一条的不含自环的图. a图与b图被认为是同构的是指a图的顶点经过一定的重新标号以后,a图的顶点集和边集能完全与b ...
- bzoj 1488: [HNOI2009]图的同构
Description 求两两互不同构的含n个点的简单图有多少种. 简单图是关联一对顶点的无向边不多于一条的不含自环的图. a图与b图被认为是同构的是指a图的顶点经过一定的重新标号以后,a图的顶点集和 ...
- bzoj 1488: [HNOI2009]图的同构【polya定理+dfs】
把连边和不连边看成黑白染色,然后就变成了 https://www.cnblogs.com/lokiii/p/10055629.html 这篇讲得好!https://blog.csdn.net/wzq_ ...
- P4727 [HNOI2009]图的同构记数
传送门 如果我们把选出子图看成选出边,进而看成对边黑白染色,那么就是上一题的弱化版了,直接复制过来然后令\(m=2\)即可 不过直接交上去会T,于是加了几发大力优化 不知为何华丽的被小号抢了rank2 ...
随机推荐
- Beta冲刺第六天
一.昨天的困难 没有困难. 二.今天进度 1.林洋洋:更新申请ip为域名,去除druid数据源统计 2.黄腾达:协作详情中添加成员对话框优化 3.张合胜:修复侧栏菜单mini状态下不能显示问题 三.明 ...
- python实现线性回归
参考:<机器学习实战>- Machine Learning in Action 一. 必备的包 一般而言,这几个包是比较常见的: • matplotlib,用于绘图 • numpy,数组处 ...
- Python 双向链表
操作 is_empty() 链表是否为空 length() 链表长度 travel() 遍历链表 add(item) 链表头部添加 append(item) 链表尾部添加 insert(pos, it ...
- bzoj 4399 魔法少女LJJ
4399: 魔法少女LJJ Time Limit: 20 Sec Memory Limit: 162 MBhttp://www.lydsy.com/JudgeOnline/problem.php?i ...
- easyUI combobox 添加空白项
今天测试反馈了一个问题,希望可以在下拉框下面加一个空白的选项(下拉框用的是combobox方法). 开始分析这个问题: 首先,这个数据都是后台读出来的,那么我在后台直接添加可以么,答案是可以的,如果没 ...
- Golang学习--开篇
最近开始接收一个新项目,是使用Golang写的,需要重新捡起Golang来,于是就有了这个系列博客. Golang的环境配置,我就不说了,让我们直接开始. Golang官网:https://golan ...
- Oracle银行存取钱系统
Oracle银行存取钱系统 /* 银行系统 要求: 1.创建一个用户信息表(userinfo).一个交易信息表(deal) 2.用户信息表字段:用户编号.用户名称.密码.余额 交易信息表字段:编号.交 ...
- 《网络》:设置三个密码:通过console口连接设备,进入特权模式,登录Telnet
软件:Cisco Packet Tracer Instructor 软件下载链接在上一篇文章中. 内容:通过设置三个密码,熟悉采用Telnet方式配置交换机的方法. 细节说明:计算机的IP地址和交换机 ...
- C#-获取字符的GBK编码值
public static int GetGBKValue(string key) { byte[] gbk = Encoding.GetEncoding("GBK").GetBy ...
- build.gradle & gradle.properties
一.build.gradle buildscript { ext { springBootVersion = '1.5.9.RELEASE' } repositories { maven { cred ...