【BZOJ】1003 Cards
【解析】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的更多相关文章
- 【BZOJ】1003: [ZJOI2006]物流运输trans(SPFA+DP)
http://www.lydsy.com/JudgeOnline/problem.php?id=1003 这题一开始看是不会的额,,,还是看题解了..一开始我觉得不能用最短路啥的,,看了题解发现这是d ...
- 【BZOJ】3052: [wc2013]糖果公园
http://www.lydsy.com/JudgeOnline/problem.php?id=3052 题意:n个带颜色的点(m种),q次询问,每次询问x到y的路径上sum{w[次数]*v[颜色]} ...
- 【BZOJ】3319: 黑白树
http://www.lydsy.com/JudgeOnline/problem.php?id=3319 题意:给一棵n节点的树(n<=1e6),m个操作(m<=1e6),每次操作有两种: ...
- 【BZOJ】3319: 黑白树(并查集+特殊的技巧/-树链剖分+线段树)
http://www.lydsy.com/JudgeOnline/problem.php?id=3319 以为是模板题就复习了下hld............................. 然后n ...
- 【BZOJ】1013: [JSOI2008]球形空间产生器sphere
[BZOJ]1013: [JSOI2008]球形空间产生器sphere 题意:给n+1个n维的点的坐标,要你求出一个到这n+1个点距离相等的点的坐标: 思路:高斯消元即第i个点和第i+1个点处理出一个 ...
- 【BZOJ】1002:轮状病毒(基尔霍夫矩阵【附公式推导】或打表)
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...
- 【BZOJ1004】[HNOI2008]Cards Burnside引理
[BZOJ1004][HNOI2008]Cards 题意:把$n$张牌染成$a,b,c$,3种颜色.其中颜色为$a,b,c$的牌的数量分别为$sa,sb,sc$.并且给出$m$个置换,保证这$m$个置 ...
- 【BZOJ】【3083】遥远的国度
树链剖分/dfs序 其实过了[BZOJ][4034][HAOI2015]T2以后就好搞了…… 链修改+子树查询+换根 其实静态树的换根直接树链剖分就可以搞了…… 因为其实只有一样变了:子树 如果roo ...
- 【BZOJ】【2434】【NOI2011】阿狸的打字机
AC自动机+DFS序+BIT 好题啊……orz PoPoQQQ 大爷 一道相似的题目:[BZOJ][3172][TJOI2013]单词 那道题也是在fail树上数有多少个点,只不过这题是在x的fail ...
随机推荐
- Codeforces 777C Alyona and Spreadsheet(思维)
题目链接 Alyona and Spreadsheet 记a[i][j]为读入的矩阵,c[i][j]为满足a[i][j],a[i - 1][j], a[i - 2][j],......,a[k][j] ...
- javascript解析机制——预解析
JavaScript解析机制是什么? JavaScript解析过程分为两个阶段,一个是编译阶段,另外一个就是执行阶段. * 编译阶段 编译阶段就是我们常说的JavaScript预解析( ...
- loj #100. 矩阵乘法
题目描述 这是一道模板题. 分别给定 n×p n \times pn×p 和 p×m p \times mp×m 的两个矩阵 A AA 和 B BB,求 A×B A \times BA×B. 输入格式 ...
- apache mina框架
http://blog.csdn.net/ljx8928358/article/details/7759024
- ios notification
apps can use local or push notifications to let people know when interesting things happen, such as: ...
- iphone之判断屏幕方向
有两种方法可以判断 1,程序刚开始运行的时候,不能获取当前方向.给你说几种方式,你试一下: 1. 可以在启动后0.01秒执行初始化的代码,这个时候就可以获取设备方向了. 2. 另外一种方式,借助状态栏 ...
- 【音乐App】—— Vue-music 项目学习笔记:歌曲列表组件开发
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 当前歌曲播放列表 添加歌曲 ...
- TestNG的參数化測试、共享线程池配置、參数默认值配置
在使用TestNG进行測试时,常常会使用到一些參数化配置,比方数据库.连接池.线程池数. 使用TestNG的參数@Parameter注解进行自己主动化读取 原创文章,版权全部.同意转载,标明出处:ht ...
- leetcode 46-Permutations and 47-Permutations II
Permutations Given a collection of numbers, return all possible permutations. For example, [1,2,3] h ...
- 一款很实用的Memcache监控工具
装了memcahce以后想对使用情况详细了解一下,如分配的内存够不够,都存了什么,经百度后发现这款工具灰常实用!此工具来自Memcache Pecl 中 http://pecl.php.net/pac ...