看黄学长的代码才写出来的,sro_hzwer_orz

原题:

小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有
多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张红色,Sb张蓝色,Sg张绝色.他又询问有多少种方
案,Sun想了一下,又给出了正确答案. 最后小春发明了M种不同的洗牌法,这里他又问Sun有多少种不同的染色方案.
两种染色方法相同当且仅当其中一种可以通过任意的洗牌法(即可以使用多种洗牌法,而每种方法可以使用多次)洗
成另一种.Sun发现这个问题有点难度,决定交给你,答案可能很大,只要求出答案除以P的余数(P为质数).

m<=60,m+1<p<100,Max{Sr,Sb,Sg}<=20。

已经把置换给出来了,要么burnside,要么polya,然而这题颜色有使用限制,所以不能用polya(polya还没理解,这里还不懂)

所以就用burnside:一个置换群的等价计数=(每个置换的置换后等价情况数)/置换总数

置换后的等价情况数就是在置换中没变的数,这个很好写

然后在置换中没变的数要刷的颜色是一样的,只有三种颜色所以就可以搞个三维的01包计数

最后除的内个置换总数因为要膜,所以要用到除法逆元

怎么用呐:

bx mod p=1,x就是b模P的乘法逆元,呢么x≡1/b(mod p),呢么a/b≡ax(mod p),然后用扩展欧几里得求乘法逆元即可(就是解bx mod p=1,某年NOIPT1)

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cmath>
 6 using namespace std;
 7 int sr,sb,sg,n,m,p;
 8 int huan[110][110];
 9 bool visited[110];
10 int ge[110];
11 int f[110][110][110];
12 int ans=0;
13 void exgcd(int a,int b,int &x,int &y){
14     if(!b){  x=1,y=0;  return ;}
15     exgcd(b,a%b,x,y);
16     int t=x;  x=y;  y=t-a/b*y;
17 }
18 int dp(int x){
19     memset(visited,0,sizeof(visited));
20     int cnt=0,temp;
21     for(int i=1;i<=n;i++)if(!visited[i]){
22         visited[i]=true;
23         ge[++cnt]=1;  temp=i;
24         while(!visited[huan[x][temp]]){
25             ge[cnt]++;
26             visited[huan[x][temp]]=true;//这里容易蒙……
27             temp=huan[x][temp];//temp指向了这个连的下一个,再次循环时判断的是下一个的下一个……
28         }
29     }
30     memset(f,0,sizeof(f));  f[0][0][0]=1;
31     for(int t=1;t<=cnt;t++)
32         for(int i=sr;i>=0;i--)
33             for(int j=sb;j>=0;j--)
34                 for(int k=sg;k>=0;k--){
35                     if(i>=ge[t])  f[i][j][k]=(f[i][j][k]+f[i-ge[t]][j][k])%p;
36                     if(j>=ge[t])  f[i][j][k]=(f[i][j][k]+f[i][j-ge[t]][k])%p;
37                     if(k>=ge[t])  f[i][j][k]=(f[i][j][k]+f[i][j][k-ge[t]])%p;
38                 }
39     return f[sr][sb][sg];
40 }
41 int main(){//freopen("ddd.in","r",stdin);
42     cin>>sr>>sb>>sg>>m>>p;
43     n=sr+sb+sg;
44     for(int i=1;i<=m;i++)
45         for(int j=1;j<=n;j++)
46             scanf("%d",&huan[i][j]);
47     m++;
48     for(int i=1;i<=n;i++)  huan[m][i]=i;//注意还有不置换的情况
49     for(int i=1;i<=m;i++)
50         ans=(ans+dp(i))%p;
51     int x,y;
52     exgcd(m,p,x,y);
53     while(x<=0)x+=p;
54     cout<<ans*x%p<<endl;
55     return 0;
56 }

View Code

转载于:https://www.cnblogs.com/JSL2018/p/5911855.html

【BZOJ1004】【HNOI20008】cards相关推荐

  1. 毕业准备:外企面试--基本涵盖了所有问题【附带有答案版本】

    毕业准备:外企面试--基本涵盖了所有问题[附带有答案版本] 2011-03-06 00:03:57 1. So, tell me a little about yourself. You don't ...

  2. 【国际大厂招人啦】PayPal专场招聘直播,立即占位!

    当当当当!万众期待的!福布斯全球企业榜上有名的!PayPal直播招聘!终于登场啦! 进大厂算什么梦想,走向国际才是王道.外资公司的好(壕),只有去了才知道! 各种职位供你选择,北京上海均有机会! 戳这 ...

  3. 【Dash搭建可视化网站】项目10:疫情数据可视化大屏制作步骤详解

    疫情数据可视化大屏制作步骤详解 1 项目效果图 2 项目架构 3 文件介绍和功能完善 3.1 assets文件夹介绍 3.2 app.py和index.py文件完善 3.3 header.py文件完善 ...

  4. 【Android Audio 入门 七】声卡的创建

    [Android Audio 入门 七]声卡的创建 七.声卡的创建 7.1 Struct snd_card 7.2 声卡的建立流程 Step 1:创建一个 snd_card 实例 Step 2:创建声 ...

  5. 基于ZCU106平台部署Vitis AI 1.2/2.5开发套件【Vivado+Vitis+Petalinux2020/2022】

    Vitis AI是 Xilinx 的开发平台,适用于在 Xilinx 硬件平台(包括边缘设备和 Alveo 卡)上进行人工智能算法推理部署.它由优化的IP.工具.库.模型和示例设计组成.Vitis A ...

  6. 【快速上手mac必备】常用优质mac软件推荐(音视频、办公、软件开发、辅助工具、系统管理、云存储)

    本文章的主要内容是我作为一名大四学生.准程序员.up主这三种身份来给大家推荐一下 mac 上好用的软件以及工具.本人也是从去年9月份开始从windows阵营转移到了mac阵营,刚开始使用的时候,也曾主 ...

  7. 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 2774  Solved: 1230 [Submit ...

  8. 【C++自我精讲】基础系列二 const

    [C++自我精讲]基础系列二 const 0 前言 分三部分:const用法.const和#define比较.const作用. 1 const用法 const常量:const可以用来定义常量,不可改变 ...

  9. (四)Asp.net web api中的坑-【api的返回值】

    (四)Asp.net web api中的坑-[api的返回值] 原文:(四)Asp.net web api中的坑-[api的返回值] void无返回值 IHttpActionResult HttpRe ...

  10. 【C++】【九】栈的应用

    [C++][九]栈的应用 就近匹配原理及其步骤: 中缀转后缀:

最新文章

  1. 转载:配置nginx支持pathinfo功能
  2. nvcc fatal : A single input file is required for a non-link phase when an outputfile is specified
  3. Android 数据加密算法 Des,Base64详解
  4. 2018/7/9-纪中某B组题【jzoj1503,jzoj1158,jzoj1161】
  5. Native Instruments Flair for Mac - 老式模拟磁带和踏板效果器
  6. Fiddler2 抓包工具,让你的信息无处可藏
  7. 吾爱破解论坛2021年11月11日,光棍节免费开放注册
  8. spring boot 集成paypal支付 rest api v2的实现
  9. PLC PID调试总结
  10. DFS.01-寻路问题
  11. 最让我感动的图片...
  12. QT pro中加入文件拷贝方法
  13. oscp——five86: 2
  14. IP转换为long类型
  15. oracle数据库报错:ORA-01654: 索引 XXX 无法通过 128 (在表空间 xxx 中) 扩展
  16. 组件,控件,用户控件
  17. 转载 sap FI-CO总账科目简析
  18. [Practical.Vim(2012.9)].Drew.Neil.Tip04学习摘要
  19. Python中列表相“与”时出现的问题
  20. ERP系统生产委外管理,内外无缝连接

热门文章

  1. 计算机网络:IP地址和子网掩码的关系
  2. Java中间件之介绍
  3. P问题,NP问题,NP难问题
  4. 测地距geodesic
  5. VSCode中使用 eslint+prettier完成代码格式化以及自动化整理
  6. MySQL-数据表创建命令
  7. OpenCL入门二:OpenCL基础概念
  8. 初学者制作VMOS场效应管小功放
  9. PhpStorm中实现代码自动换行
  10. PB使用http协议、https协议(简单便捷)