题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1004

   http://poj.org/problem?id=2409

学习材料:https://www.cnblogs.com/nietzsche-oier/p/6883880.html

     https://files-cdn.cnblogs.com/files/HocRiser/Burnside.pdf

bzoj 1004:这道题注意考虑单位元的那个置换。

然后用 polya 定理即可。不动点个数是 dp 出来的,以保证合法。 dp 时注意 res -= tot 。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=,M=;
int n,m,mod,s0,s1,s2,a[N],f[N],dp[][M][M][M],ans;
bool vis[N];
void upd(int &x){x>=mod?x-=mod:;}
int pw(int x,int k)
{int ret=;while(k){if(k&)ret=(ll)ret*x%mod;x=(ll)x*x%mod;k>>=;}return ret;}
int solve()
{
memset(vis,,sizeof vis);
memset(dp[],,sizeof dp[]); dp[][s0][s1][s2]=;
bool fx=; int res=n;
for(int i=;i<=n;i++)
if(!vis[i])
{
int tot=,cr=i;
while(!vis[cr])
{
tot++; vis[cr]=;
cr=a[cr];
}
bool tf=!fx; memset(dp[tf],,sizeof dp[tf]);
for(int x0=s0;x0>=;x0--)
for(int x1=s1;x1>=;x1--)
{
int x2=res-x0-x1,d;
if(x2>s2||!(d=dp[fx][x0][x1][x2]))continue;
if(x0>=tot)dp[tf][x0-tot][x1][x2]+=d,upd(dp[tf][x0-tot][x1][x2]);
if(x1>=tot)dp[tf][x0][x1-tot][x2]+=d,upd(dp[tf][x0][x1-tot][x2]);
if(x2>=tot)dp[tf][x0][x1][x2-tot]+=d,upd(dp[tf][x0][x1][x2-tot]);
}
fx=tf; res-=tot;
}
return dp[fx][][][];
}
int main()
{
scanf("%d%d%d%d%d",&s0,&s1,&s2,&m,&mod);
n=s0+s1+s2;
for(int j=;j<=n;j++)a[j]=j;
ans+=solve(); upd(ans);
for(int i=;i<=m;i++)
{
for(int j=,d;j<=n;j++)scanf("%d",&d),a[d]=j;
ans+=solve(); upd(ans);
}
ans=(ll)ans*pw(m+,mod-)%mod;
printf("%d\n",ans);
return ;
}

poj 2409:polya模板。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=;
int n,m; ll ans;
int gcd(int a,int b){return b?gcd(b,a%b):a;}
ll pw(ll x,int k)
{ll ret=;while(k){if(k&)ret*=x;x*=x;k>>=;}return ret;}
int main()
{
while()
{
scanf("%d%d",&m,&n);if(!n&&!m)return ;
ans=;
for(int i=;i<=n;i++)ans+=pw(m,gcd(n,i));
if(n&) ans+=n*pw(m,n+>>);
else ans+=(n*pw(m,n>>)>>)+(n*pw(m,(n>>)+)>>);
printf("%lld\n",ans/(n<<));
}
return ;
}

bzoj 1004 [HNOI2008]Cards && poj 2409 Let it Bead ——置换群的更多相关文章

  1. bzoj 1004 Cards & poj 2409 Let it Bead —— 置换群

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1004 关于置换群:https://www.cnblogs.com/nietzsche-oie ...

  2. BZOJ 1004: [HNOI2008]Cards( 置换群 + burnside引理 + 背包dp + 乘法逆元 )

    题意保证了是一个置换群. 根据burnside引理, 答案为Σc(f) / (M+1). c(f)表示置换f的不动点数, 而题目限制了颜色的数量, 所以还得满足题目, 用背包dp来计算.dp(x,i, ...

  3. [BZOJ 1004] [HNOI2008] Cards 【Burnside引理 + DP】

    题目链接:BZOJ - 1004 题目分析 首先,几个定义和定理引理: 群:G是一个集合,*是定义在这个集合上的一个运算. 如果满足以下性质,那么(G, *)是一个群. 1)封闭性,对于任意 a, b ...

  4. BZOJ 1004: [HNOI2008]Cards

    Description 给你一个序列,和m种可以使用多次的置换,用3种颜色染色,求方案数%p. Sol Burnside定理+背包. Burnside定理 \(N(G,\mathbb{C})=\fra ...

  5. BZOJ 1004 HNOI2008 Cards Burnside引理

    标题效果:特定n张卡m换人,编号寻求等价类 数据保证这m换人加上置换群置换后本身构成 BZOJ坑爹0.0 条件不那么重要出来尼玛怎么做 Burnside引理--昨晚为了做这题硬啃了一晚上白书0.0 都 ...

  6. BZOJ 1004: [HNOI2008]Cards(群论)

    好吧我就是蒟蒻根本没听说过群论(虽说听叉姐说几万年都不会考) 我也讲不太来,直接戳VFK大神的blog啦 = = http://vfleaking.blog.163.com/blog/static/1 ...

  7. BZOJ 1004: [HNOI2008]Cards [Polya 生成函数DP]

    传送门 题意:三种颜色,规定使用每种颜色次数$r,g,b$,给出一个置换群,求多少种不等价着色 $m \le 60,\ r,g,b \le 20$ 咦,规定次数? <组合数学>上不是有生成 ...

  8. POJ 2409 Let it Bead [置换群 Polya]

    传送门 题意:$m$种颜色$n$颗珠子,定义旋转和翻转两种置换,求不等价着色数 暴力求每个置换的循环节也许会$T?$ 我们可以发现一些规律: 翻转: $n$为奇数时每个置换有$1+\frac{n-1} ...

  9. bzoj 1004 1004: [HNOI2008]Cards burnside定理

    1004: [HNOI2008]Cards Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1668  Solved: 978[Submit][Stat ...

随机推荐

  1. [洛谷3041]视频游戏的连击Video Game Combos

    题目描述 Bessie is playing a video game! In the game, the three letters 'A', 'B', and 'C' are the only v ...

  2. 并发-ConcurrentHashMap源码分析

    ConcurrentHashMap 参考: http://www.cnblogs.com/chengxiao/p/6842045.html https://my.oschina.net/hosee/b ...

  3. tcp连接的建立与释放

    1.TCP是面向连接的协议. 运输连接时用来传送TCP报文的.TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程.因此,运输链接就有三个阶段,即:连接建立.数据传送和连接释放. 在TCP ...

  4. BZOJ4455/UOJ185 [Zjoi2016]小星星

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  5. crontab 参数详解

    crontab 参数 用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下: minute ...

  6. JSP报错01

    ZC: 创建一个JSP之后,就报如下错误. 1.错误: 1.1. 2.处理: Exlipse for JEE --> Project Explorer 中选择项目 --> 右击项目名 -- ...

  7. BZOJ 3931 [CQOI2015]网络吞吐量:最大流【拆点】

    传送门 题意 给你一个 $ n $ 个点,$ m $ 条边的无向网络,每条边有长度.每个点的流量限制为 $ c[i] $ . 要求流量只能经过从 $ 1 $ 的 $ n $ 的最短路.问你最大流是多少 ...

  8. 图片与路径(Path)的应用

    图片的应用:软盘样式的保存按钮,笔记本样式的编辑按钮:只能用图片 路径(Path)的应用:异形轮廓(各种气泡框,普通控件无法描述):异形线条(普通控件无法描述):图片(不建议,因为展现效果不好,比如: ...

  9. 后台操作日志,插入数据获取的该数据主键ID为null

    代码如下: @Override public void saveTopicResource(TopicResourceModel model, Integer userId) { TopicResou ...

  10. hdu 5979 Convex(水,求面积)

    Convex Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...