【HNOI2009】bzoj1488 图的同构
来源:互联网 发布:maven 指定java home 编辑:程序博客网 时间:2024/06/06 21:42
首先可以把问题转化成在完全图上对边进行黑白染色。
对于每个点的置换,要求出有多少关于边的不动点。把置换分解成循环,可以发现,一个长度为
但是直接枚举点的置换有
然后,固定第一个元素,每个循环有
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int p=997;int n,ans,fac[65],inv[65],invfac[65],cnt[65],a[65],gcd[65][65],node;int pow(int base,int k){ int ret=1; for (;k;k>>=1,base=base*base%p) if (k&1) ret=ret*base%p; return ret;}int getgcd(int x,int y){ if (gcd[x][y]) return gcd[x][y]; return gcd[x][y]=y?getgcd(y,x%y):x;}void check(){ int ret=fac[n],tot=0,sum=0; for (int i=1;i<=n;i++) { ret=ret*invfac[cnt[i]]%p; for (int j=1;j<=cnt[i];j++) a[++tot]=i,ret=ret*inv[i]%p; } for (int i=1;i<=tot;i++) { sum+=a[i]/2; for (int j=i+1;j<=tot;j++) sum+=gcd[a[i]][a[j]]; } ret=ret*pow(2,sum)%p; ans=(ans+ret)%p;}void dfs(int now,int num){ //node++; if (now==1) { cnt[1]=n-num; check(); return; } for (int i=0;num+i*now<=n;i++) { cnt[now]=i; dfs(now-1,num+i*now); }}int main(){ scanf("%d",&n); fac[0]=invfac[0]=1; for (int i=1;i<=n;i++) { fac[i]=fac[i-1]*i%p; inv[i]=pow(i,p-2); invfac[i]=pow(fac[i],p-2); } for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) gcd[i][j]=getgcd(i,j); dfs(n,0); //printf("%d\n",node); printf("%d\n",ans*invfac[n]%p);}
0 0
- BZOJ1488: [HNOI2009]图的同构
- BZOJ1488 [HNOI2009]图的同构
- bzoj1488[HNOI2009] 图的同构
- 【HNOI2009】bzoj1488 图的同构
- [bzoj1488][HNOI2009]图的同构——Polya定理
- [bzoj1488][HNOI2009]图的同构——Polya定理
- [bzoj1488][HNOI2009]图的同构——Polya定理
- [BZOJ1488][HNOI2009]图的同构(dfs+置换群+数论+组合数学)
- 【BZOJ1815&&BZOJ1488】有色图&&图的同构,Polya计数+暴力
- BZOJ 1488: [HNOI2009]图的同构
- [bzoj1488][hnoi2009]同构图
- 【Pólya计数】hnoi2009图的同构计数
- BZOJ 1488 [HNOI2009]图的同构 Polya定理
- bzoj 1488: [HNOI2009]图的同构 (置换+dfs)
- 一个图的同构问题?
- HDU 3629 图的同构
- bzoj-1488 图的同构
- [HNOI2009]有趣的数列
- Unity Shader-法线贴图(Normal Map)与视差贴图(Parallax Map)
- ARIMA时间序列
- spring声明式事务策略 aop拦截-学习笔记
- App公共组件:加载数据Layout,高效开发必备!
- Java学习之二维数组
- 【HNOI2009】bzoj1488 图的同构
- 初学android之使用Broadcast新建广播使手机关机时播放自定义音乐
- 单链表逆序
- 数组之2Sum,3Sum,4Sum,3Sum closest总结
- git入门
- 单链表翻转
- VBA代码实例---高级筛选
- python 不是内部或外部命令解决方法
- 进程间通信的方式——匿名管道