BZOJ1488: [HNOI2009]图的同构
来源:互联网 发布:网络剪刀手破解版 编辑:程序博客网 时间:2024/05/24 05:03
burnside+polya
首先将图中的所有无向边,存在就染成1,不存在就染成2,问题就转化成了一个完全图的染色问题
完全图的染色问题在08年的论文:陈瑜希《Pólya计数法的应用》中有详细题解,算比较清楚了
然后就不想写了,翻论文吧,绝对比我写的要清晰
code:
#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#include<string>#include<vector>#include<cstdio>#include<cstdlib>#include<cstring>#include<climits>#include<complex>#include<iostream>#include<algorithm>#define ll long longusing namespace std;const int maxn = 80;const int Mod = 997;int ny[Mod+10],pw[maxn*maxn];int gcd(int a,int b){return a==0?b:gcd(b%a,a);}void prepare(){ ny[1]=1; for(int i=2;i<Mod;i++) ny[i]=(((-Mod/i)*ny[Mod%i]%Mod)+Mod)%Mod;}int ret,n,temp;int a[maxn];void solve(int nw,int down,int up,int s){ if(!up) { int k=0,t=1,r=temp; for(int i=1;i<nw;i++) { if(a[i]!=a[i-1]) { r=r*ny[t]%Mod; t=1; k=0; } r=r*ny[a[i]]%Mod; k++; t=t*k%Mod; } r=r*ny[t]%Mod; ret=(ret+pw[s]*r)%Mod; return ; } for(int i=down;i<=up;i++) { if(i!=up&&up-i<i) continue; a[nw]=i; int l=i/2; for(int j=1;j<nw;j++) l=(l+gcd(i,a[j]))%Mod; solve(nw+1,i,up-i,s+l); }}int main(){ prepare(); pw[0]=1; for(int i=1;i<maxn*maxn;i++) pw[i]=(pw[i-1]<<1)%Mod; scanf("%d",&n); temp=1; for(int i=1;i<=n;i++) temp=temp*i%Mod; ret=0; solve(1,1,n,0); ret=ret*ny[temp]%Mod; printf("%d\n",ret); return 0;}
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]有趣的数列
- jQuery--获取/设置CSS类
- C/C++——静态链接库
- pat甲1013. Battle Over Cities(dfs)
- JDBC连接数据库的过程
- Ubuntu 16.04 apt-get搭建LAMP环境
- BZOJ1488: [HNOI2009]图的同构
- malloc()、calloc()以及ralloc()
- 利用指针和迭代器遍历二维数组的2种方法
- AVAudioSession应用指南
- jQuery--追加/删除 元素
- relloc calloc 如何使用 注意事项
- c++学习(五):new char[]的赋值
- 【Python错误】 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)
- jQuery--获取/设置内容和属性