P4727 [HNOI2009]图的同构记数
如果我们把选出子图看成选出边,进而看成对边黑白染色,那么就是上一题的弱化版了,直接复制过来然后令\(m=2\)即可
不过直接交上去会T,于是加了几发大力优化
不知为何华丽的被小号抢了rank2
//minamoto
#include<bits/stdc++.h>
#define fp(i,a,b) for(register int i=a,I=b+1;i<I;++i)
#define fd(i,a,b) for(register int i=a,I=b-1;i>I;--i)
using namespace std;
const int N=105,P=997;
int ans,n,m,fac[N],inv[N],rec[N],Gcd[N][N];
int GCD(int i,int j){
if(Gcd[i][j])return Gcd[i][j];
if(!i)return Gcd[i][j]=j;if(!j)return Gcd[i][j]=i;
return Gcd[i][j]=GCD(j,i%j);
}
int ksm(int x,int y){
int res=1;
for(;y;y>>=1,x=x*x%P)if(y&1)res=res*x%P;
return res;
}
void calc(int x){
int sum=0,mul=1,now=1;
fp(i,1,x)sum+=rec[i]/2;
fp(i,1,x)fp(j,i+1,x)sum+=Gcd[rec[i]][rec[j]];
fp(i,1,x)(mul*=rec[i])%=P;
fp(i,2,x){
if(rec[i]!=rec[i-1])(mul*=fac[now])%=P,now=0;
++now;
}(mul*=fac[now])%=P,mul=fac[n]*ksm(mul,P-2)%P;
(ans+=mul*ksm(m,sum)%P)%=P;
}
void dfs(int k,int x,int s){
if(!x)calc(k-1);if(x<s)return;
fp(i,s,x)rec[k]=i,dfs(k+1,x-i,i);
}
void init(){
fac[0]=1;fp(i,1,n)fac[i]=fac[i-1]*i%P;
fp(i,1,n)Gcd[i][0]=Gcd[0][i]=i;
fp(i,1,n)fp(j,1,n)GCD(i,j);
}
int main(){
// freopen("testdata.in","r",stdin);
scanf("%d",&n),m=2,init();
dfs(1,n,1);(ans*=ksm(fac[n],P-2))%=P;
printf("%d\n",ans);return 0;
}
P4727 [HNOI2009]图的同构记数的更多相关文章
- [HNOI2009]图的同构记数
题意 在所以置换下,本质不同的\(n\)阶图个数 做法 可以假想成\(K_n\),边有黑白两色,黑边存在于原图,白边存在于补图 由于\(n\le 60\),可以手算出拆分数不大,所以我们爆搜置换群 对 ...
- Luogu P4727-- 【HNOI2009】图的同构记数
Description 求两两互不同构的含n个点的简单图有多少种. 简单图是关联一对顶点的无向边不多于一条的不含自环的图. a图与b图被认为是同构的是指a图的顶点经过一定的重新标号以后,a图的顶点集和 ...
- BZOJ 1488 Luogu P4727 [HNOI2009]图的同构 (Burnside引理、组合计数)
题目链接 (Luogu) https://www.luogu.org/problem/P4727 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.ph ...
- 【BZOJ1488】[HNOI2009]图的同构(Burside引理,Polya定理)
[BZOJ1488][HNOI2009]图的同构(Burside引理,Polya定理) 题面 BZOJ 洛谷 题解 求本质不同的方案数,很明显就是群论这套理论了. 置换一共有\(n!\)个,考虑如何对 ...
- bzoj1488 [HNOI2009]图的同构 Burnside 引理
题目传送门 bzoj1488 - [HNOI2009]图的同构 bzoj1815 - [Shoi2006]color 有色图(双倍经验) 题解 暴力 由于在做题之前已经被告知是 Burnside 引理 ...
- bzoj1488[HNOI2009]图的同构
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1488 1488: [HNOI2009]图的同构 Time Limit: 10 Sec M ...
- 记数排序 & 桶排序 & 基数排序
为什么要写这样滴一篇博客捏...因为一个新初一问了一道水题,结果就莫名其妙引起了战斗. 然后突然发现之前理解的桶排序并不是真正的桶排序,所以写一篇来区别下这三个十分相似的排序辣. 老年菜兔的觉醒!!! ...
- Python02 标准输入输出、数据类型、变量、随记数的生成、turtle模块详解
1 标准输出 python3利用 print() 来实现标准输出 def print(self, *args, sep=' ', end='\n', file=None): # known speci ...
- 记数问题(0)<P2013_1>
记数问题 (count.cpp/c/pas) [问题描述] 试计算在区间1到n的所有整数中,数字x(0≤x≤9)共出现了多少次?例如,在1到11中,即在1.2.3.4.5.6.7.8.9.10.11 ...
随机推荐
- hdu 2433 Travel (最短路树)
One day, Tom traveled to a country named BGM. BGM is a small country, but there are N (N <= 100) ...
- [NOIP2005] 普及组 循环
陶陶摘苹果 校门外的树 采药 以上三道都不是重点 循环 题目描述 乐乐是一个聪明而又勤奋好学的孩子.他总喜欢探求事物的规律.一天,他突然对数的正整数次幂产生了兴趣. 众所周知,2的正整数次幂最后一位数 ...
- hdu - 1172 猜数字 (思维题)
http://acm.hdu.edu.cn/showproblem.php?pid=1172 这个题换一种想法,可以找出四位数中所有满足条件的数看是否只有一个. #include <iostre ...
- 调整JVM内存大小
首次运行公司项目,出现了内存溢出,具体出现java.lang.OutOfMemoryError: PermGen space和java.lang.OutOfMemoryError:GC overhea ...
- Java函数式接口Function
Function 提供了一个抽象方法 R apply(T t) 接收一个参数 返回 一个值,还有两个默认方法和一个静态方法 compose 是一个嵌套方法,先执行before.apply() 得到运 ...
- 一个简单的Java文件工具类
package com.xyworkroom.ntko.util; import java.io.File; import java.io.FileInputStream; import java.i ...
- 学习javascript 非常好的博客
这个大牛写的非常好!!推荐一下 http://www.cnblogs.com/xiaohuochai/tag/javascript%E6%80%BB%E7%BB%93/default.html?pag ...
- <a href="javascript:;"></a>
有时会在网页a标签中看到这样的代码,比如: <a href="javascript:;">反选</a> 这是啥意思呢? 我们知道标签的 href属性用于指定 ...
- git remote加入本地库的方法
方法来自airk: 假设须要将你电脑本地的一个git库(目录)B 加入到另外一个git库(目录) A的 remote里 操作方法例如以下: 先在git仓库B操作: git init --bare 然后 ...
- create-react-app 引入 antd 及 解决 antd 样式无法显示的bug
方案一: npm run eject 暴露所有内建的配置 安装组件库 yarn add antd babel-plugin-import 根目录下新建.roadhogrc文件(别忘了前面的点,这是ro ...