【解析】Burnside引理+背包dp+乘法逆元

[Analysis]

这道题卡了好久,就是没想懂置换跟着色是不一样的。



依据burnside引理。在一个置换群作用下不等价类的个数为每一个置换作用下不动点个数的平均数。

在这道题中:

置换的对象 ——
每一个状态,标号为1—N(这里的N不是题目的N,而是状态的个数)。

不动点 ——
前后染色状态全然同样的状态的个数。

所以就是求经过变换后前后状态全然同样的个数。

[Sum]

Burnside引理几个注意的地方

[1]什么是Burnside引理?

[2]置换的对象是什么?

[3]不动点意味着什么?

[4]着色变换不是置换。

[Code]

<span style="font-size:18px;">/**************************************************************
Problem: 1004
User: y20070316
Language: C++
Result: Accepted
Time:328 ms
Memory:2164 kb
****************************************************************/ #include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std; const int N=70; int Sr,Sb,Sg,n,m,p; //Basic
int map[N][N],d[N],v[N],cnt; //Substitution
int f[N][N][N]; //Damatic Programming
int res; //Answer inline int read(void)
{
int s=0,f=1; char c=getchar();
for (;c<'0'||c>'9';c=getchar());
for (;'0'<=c&&c<='9';c=getchar()) s=s*10+c-'0';
return s*f;
} void init(void)
{
Sr=read(),Sb=read(),Sg=read(),n=Sr+Sb+Sg;
m=read(),p=read();
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++) map[i][j]=read();
m++; for (int j=1;j<=n;j++) map[m][j]=j;
} void work(void)
{
for (int i=1;i<=m;i++)
{
cnt=0; memset(v,0,sizeof v);
memset(d,0,sizeof d); for (int j=1;j<=n;j++)
if (!v[j])
{
v[j]=d[++cnt]=1;
for (int k=map[i][j];k^j;k=map[i][k])
v[k]=1,d[cnt]++;
} memset(f,0,sizeof f); f[0][0][0]=1;
for (int i=1;i<=cnt;i++)
for (int j=Sr;j>=0;j--)
for (int k=Sb;k>=0;k--)
for (int q=Sg;q>=0;q--)
{
f[j][k][q]=0;
if (j>=d[i]) f[j][k][q]=(f[j][k][q]+f[j-d[i]][k][q])%p;
if (k>=d[i]) f[j][k][q]=(f[j][k][q]+f[j][k-d[i]][q])%p;
if (q>=d[i]) f[j][k][q]=(f[j][k][q]+f[j][k][q-d[i]])%p;
}
res=(res+f[Sr][Sb][Sg])%p;
}
} int mi(int i,int j)
{
if (!j) return 1;
int s=mi(i,j>>1);
s=s*s%p;
if (j&1) s=s*i%p;
return s;
} void print(void)
{
int inv=mi(m,p-2);
res=res*inv%p;
printf("%d\n",(res+p)%p);
} int main(void)
{
init();
work();
print(); return 0;
}</span>

【BZOJ】1003 Cards的更多相关文章

  1. 【BZOJ】1003: [ZJOI2006]物流运输trans(SPFA+DP)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1003 这题一开始看是不会的额,,,还是看题解了..一开始我觉得不能用最短路啥的,,看了题解发现这是d ...

  2. 【BZOJ】3052: [wc2013]糖果公园

    http://www.lydsy.com/JudgeOnline/problem.php?id=3052 题意:n个带颜色的点(m种),q次询问,每次询问x到y的路径上sum{w[次数]*v[颜色]} ...

  3. 【BZOJ】3319: 黑白树

    http://www.lydsy.com/JudgeOnline/problem.php?id=3319 题意:给一棵n节点的树(n<=1e6),m个操作(m<=1e6),每次操作有两种: ...

  4. 【BZOJ】3319: 黑白树(并查集+特殊的技巧/-树链剖分+线段树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3319 以为是模板题就复习了下hld............................. 然后n ...

  5. 【BZOJ】1013: [JSOI2008]球形空间产生器sphere

    [BZOJ]1013: [JSOI2008]球形空间产生器sphere 题意:给n+1个n维的点的坐标,要你求出一个到这n+1个点距离相等的点的坐标: 思路:高斯消元即第i个点和第i+1个点处理出一个 ...

  6. 【BZOJ】1002:轮状病毒(基尔霍夫矩阵【附公式推导】或打表)

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...

  7. 【BZOJ1004】[HNOI2008]Cards Burnside引理

    [BZOJ1004][HNOI2008]Cards 题意:把$n$张牌染成$a,b,c$,3种颜色.其中颜色为$a,b,c$的牌的数量分别为$sa,sb,sc$.并且给出$m$个置换,保证这$m$个置 ...

  8. 【BZOJ】【3083】遥远的国度

    树链剖分/dfs序 其实过了[BZOJ][4034][HAOI2015]T2以后就好搞了…… 链修改+子树查询+换根 其实静态树的换根直接树链剖分就可以搞了…… 因为其实只有一样变了:子树 如果roo ...

  9. 【BZOJ】【2434】【NOI2011】阿狸的打字机

    AC自动机+DFS序+BIT 好题啊……orz PoPoQQQ 大爷 一道相似的题目:[BZOJ][3172][TJOI2013]单词 那道题也是在fail树上数有多少个点,只不过这题是在x的fail ...

随机推荐

  1. python的特殊方法总结

    1.跟运算相关的特殊方法 2.跟运算符相关的方法

  2. springBoot 整合 mybatis+Oracle

    现在比较流行的操作数据库操作层框架Mybatis,下面我们就来看看Springboot如何整合mybatis, 之前一直在用xml形式写sql,这次依然用xml的方式感觉这种还是比较灵活方便. 添加m ...

  3. How To Use Git Source Control with Xcode in iOS 6

    This tutorial is by Malek Trabelsi, a passionate iOS developer from Tunisia focused primarily on mob ...

  4. 【windows】windows系统下,在任务管理器的进程选项卡中查看PID/任务管理器怎么查看PID

    PID,就是windows上的进程ID,是一个进程的唯一标识值. 那今天启动JDK跑起来一个项目之后,想要在任务管理器中查看这个JDK所在进程的PID但是看不到. 怎么解决? 1.我在任务管理器的服务 ...

  5. 矩阵快速幂计算hdu1575

    矩阵快速幂计算和整数快速幂计算相同.在计算A^7时,7的二进制为111,从而A^7=A^(1+2+4)=A*A^2*A^4.而A^2可以由A*A得到,A^4可以由A^2*A^2得到.计算两个n阶方阵的 ...

  6. Mycat本地模式的自增长分表操作

    Mycat对表t_rc_rule_monitor做分表操作 在mysql上执行(没有t_rc_rule_monitor) DROP TABLE IF EXISTS t_rc_rule_monitor; ...

  7. 【开发总结】—— BABYLON 项目开发必备系列

    前言:在公司主要使用Babylon.js作为前端引擎,我自己在开发中总结到基本上每一个新项目都会需要这些基本设置. 一.ios兼容:解决镜面反射   如果不加offline,材质中有镜面反射,苹果手机 ...

  8. 一些绕过waf的笔记

    转自:http://fuck.0day5.com/archives/622.html 一.各种编码绕过1. ? 1 2 ?id=1 union select pass from admin limit ...

  9. C#托付之愚见

    C#托付起源 近期參加实习和奔走于各大招聘会,被问及非常多技术方面的问题.C#问的较多的就是托付和linq. linq之前已经写过一篇文章,能够參见 http://blog.csdn.net/yzys ...

  10. Android开发有用的三方网站

    聚合数据-免费数据调用 https://www.juhe.cn/ 有赞- 免费的微商城 http://youzan.com/ 秀米微信图文编辑器 http://xiumi.us/ 禅道项目管理软件 h ...