组合计数(polya计数):SGU 282 Isomorphism



因为论文的题解写得太好了,直接贴。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
typedef long long LL;
const int N=;int st[N];
LL n,m,Mod,fac[N],ifac[N],pow[N],ans;
LL Inv(LL x){return x==?x:(Mod-Mod/x)*Inv(Mod%x)%Mod;}
LL Gcd(LL a,LL b){return b?Gcd(b,a%b):a;}
void DFS(int d,int c,int l){
if(c==){
LL tot=;int t=;
for(int i=;i<=d;i++)
tot=tot*Inv(st[i])%Mod;
for(int i=;i<=d;i++)
if(st[i]!=st[i-]){
tot=tot*ifac[t]%Mod;
t=;
}
else t+=;
tot=tot*ifac[t]%Mod;
for(int i=;i<=d;i++)
tot=tot*pow[st[i]/]%Mod;
for(int i=;i<=d;i++)
for(int j=i+;j<=d;j++)
tot=tot*pow[Gcd(st[i],st[j])]%Mod;
ans=(ans+tot)%Mod;
}
for(int i=l;i<=c;i++)
st[d+]=i,DFS(d+,c-i,i);
}
int main(){
scanf("%I64d%I64d%I64d",&n,&m,&Mod);
pow[]=fac[]=ifac[]=;
for(int i=;i<=n;i++){
fac[i]=1ll*fac[i-]*i%Mod;
pow[i]=pow[i-]*m%Mod;
ifac[i]=Inv(fac[i]);
}
DFS(,n,);printf("%I64d\n",ans);
return ;
}
组合计数(polya计数):SGU 282 Isomorphism的更多相关文章
- 《程序设计中的组合数学》——polya计数
我们在高中的组合数学中常常会碰到有关涂色的问题,例如:用红蓝两种颜色给正方形的四个顶点涂色,会有几种不同的方案.在当时,我们下意识的认为,正方形的四个顶点是各不相同的,即正方形是固定的.而实际上我们知 ...
- hdu 5868 Polya计数
Different Circle Permutation Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K ...
- hdu 2865 Polya计数+(矩阵 or 找规律 求C)
Birthday Toy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- Polya计数
Let it Bead Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5365 Accepted: 3585 Descr ...
- 组合数学及其应用——polya计数
在处理类似下面的问题中,一般的计数方法会出现问题:假如你要用红.蓝两种颜色给一个正四面体的四个顶点着色,试问存在多少种不同的着色方案? 在高中我们常用的方法是模拟涂色过程,分情况讨论,然后基于分步乘法 ...
- HDU 4633 Who's Aunt Zhang (2013多校4 1002 polya计数)
Who's Aunt Zhang Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu 5868:Different Circle Permutation 【Polya计数】
似乎是比较基础的一道用到polya定理的题,为了这道题扣了半天组合数学和数论. 等价的题意:可以当成是给正n边形的顶点染色,旋转同构,两种颜色,假设是红蓝,相邻顶点不能同时为蓝. 大概思路:在不考虑旋 ...
- 群论&Polya计数
群论&Polya计数 其实在我听课的过程中,我发现针对于学习OI中的群并没有什么过多必要向内学习... 群 以后会补的. 就是\(QQ\)群. 置换 置换就是一个... \[ \begin{m ...
- LightOJ 1419 – Necklace Polya计数+费马小定理求逆元
题意:给你n个珠子可以染成k种颜色,旋转后相同的视为一种,问共有几种情况 思路:开始按照一般的排列组合做发现情况太多且要太多运算,查了下发现此题是组合中Polya定理模板题- 学的浅只能大致一说公式S ...
随机推荐
- 【转】iOS开发——基本常识篇&各种控件默认高度
原文:http://www.cnblogs.com/iCocos/p/4595614.html 各种控件默认高度 1.状态栏 状态栏一般高度为20像素,在打手机或者显示消息时会放大到40像素高,注 ...
- IOS-开发日志-UILabel相关
UILabel属性 1.text:设置标签显示文本. 2.attributedText:设置标签属性文本. Ios代码 NSString *text = @"first"; NSM ...
- spring学习笔记之spring框架本质
Spring框架的本质是,开发者在Spring配置文件中使用XML元素进行配置,实际驱动Spring执行相应的代码: 使用<bean.../>元素,实际启动Spring执行无参或有参构造函 ...
- 类库探源——System.Drawing.Bitmap
一.System.Drawing.Bitmap Bitmap 类: 封装GDI+ 位图,此位图由图形图像及其属性的像素数据组成.Bitmap 是用于处理由像素定义的图像的对象 命名空间: System ...
- eclipse+PyDev 中报错"scrapy.spiders.Spider" ,可用"# @UndefinedVariable"压制.
# -*- coding:utf-8 -*- ''' Created on 2015年10月22日 (1.1) 例子来源: http://scrapy-chs.readthedocs.org/zh_C ...
- 飞锐GIS开发基础系列
3s知识库和GIS科研站,未经允许,禁止任何形式的复制.转载和传播.联系方式:276888624@qq.com 品GIS,品开发,品人生...... http://www.3sbase.com/3sb ...
- Qt 之 QtScript
前言 前面学习中,很多地方都用到了C++和JavaScript相互通信.今天就学习QtScript模块吧. Qt 包含完全集成的 ECMA 标准脚本引擎.Qt Script 集成了 QObject,为 ...
- win7下简单FTP服务器搭建
本文介绍通过win7自带的IIS来搭建一个只能实现基本功能的FTP服务器,第一次装好WIN7后我愣是没整出来,后来查了一下网上资料经过试验后搭建成功,其实原理和步骤与windows前期的版本差不多,主 ...
- isset(), empty()
isset()测试$a = '';isset($a); // true $a = FALSE;var_dump(isset($a)); // true $a = NULL;var_dump(isset ...
- (WinForm)FormBorderStyle属性
此属性就是获取或设置窗体的边框样式,默认值为 FormBorderStyle.Sizable.共7个值. 属性 意义 None 无边框 FixedSingle 固定的单行边框 Fixed3D 固定的三 ...