【题目分析】

同样是Burnside引理。但是有几种颜色是不能放在一起的。

所以DP就好了。

然后T掉

所以矩阵乘法就好了。

然后T掉

所以取模取的少一些,矩阵乘法里的取模尤其要注意,就可以了。

A掉

【代码】

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;#define F(i,j,k) for (int i=j;i<=k;++i)
#define D(i,j,k) for (int i=j;i>=k;--i)
#define maxn 11
#define ll long long
#define inf 0x3f3f3f3f
#define maxm 100005
const int md=9973;int T,n,m,k,ni,ispr[maxm],pr[maxm],top=0,sum;struct Matrix{int x[maxn][maxn];void init(){memset(x,0,sizeof x);}void clear(){F(i,1,m)F(j,1,m)x[i][j]=1;}void print(){F(i,1,m){F(j,1,m) printf("%d ",x[i][j]);printf("\n");}}
}A,B,C,D;Matrix operator * (const Matrix a,const Matrix b) {Matrix c;for (int i=1;i<maxn;++i)for (int j=1;j<maxn;++j){c.x[i][j]=0;for (int k=1;k<maxn;++k)c.x[i][j]+=a.x[i][k]*b.x[k][j];c.x[i][j]%=md;}return c;
}void init()
{F(i,2,maxm-1){if (!ispr[i]) pr[++top]=i;F(j,2,inf){if (i*j>=maxm) break;ispr[i*j]=1;}}
}int qpow(int a,int b)
{int ret=1;a%=md;while (b){if (b&1) (ret*=a)%=md;(a*=a)%=md;b>>=1;}return ret;
}int phi(int n)
{int ret=n;for (int i=1;pr[i]*pr[i]<=n&&i<=top;++i)if (n%pr[i]==0){ret=ret-ret/pr[i];while (n%pr[i]==0) n/=pr[i];}if (n>1) ret=ret-ret/n;return ret%md;
}int tak(int b)
{int ret=0;D.init();F(i,1,m)D.x[i][i]=1;C=B;while (b){if (b&1) D=D*C;C=C*C;b>>=1;}F(i,1,m) ret+=D.x[i][i];return ret;
}int main()
{init();scanf("%d",&T);while (T--){sum=0;scanf("%d%d%d",&n,&m,&k);ni=qpow(n,md-2);B.init();B.clear();F(i,1,k){int a,b;scanf("%d%d",&a,&b);B.x[a][b]=B.x[b][a]=0;}for (int i=1;(ll)i*(ll)i<=(ll)n;++i){if (n%i==0){sum=(sum+tak(i)*phi(n/i))%md;if (i*i!=n)sum=(sum+tak(n/i)*phi(i))%md;}}printf("%d\n",(sum*ni)%md);}
}

  

转载于:https://www.cnblogs.com/SfailSth/p/6413768.html

POJ 2888 Magic Bracelet ——Burnside引理相关推荐

  1. 我花了三个小时写了一道题的六千字题解....(POJ 2888 Magic Bracelet)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 前置知识:小学生都能看懂的群论从入门到升天教程 <群论全家桶> 一道简单的题目 Probl ...

  2. [POJ2888] Magic Bracelet

    [POJ2888] Magic Bracelet 题目描述 简要题意:给圆上个点染色,颜色有种,其中对颜色不能相邻,循环同构,多组数据,询问染色方案数. Solution 大概就是一道挺显然的Burn ...

  3. Polya定理,Burnside引理

    涉及到组合数学的问题,首先是群的概念: 设G是一个集合,*是G上的二元运算,如果(G,*)满足下面的条件: 封闭性:对于任何a,b∈G,有a*b∈G; 结合律:对任何a,b,c∈G有(a*b)*c=a ...

  4. Polya定理与Burnside引理及其应用

    Polya定理及其应用 群与置换群 轮换 PolyaPolyaPolya定理 BurnsideBurnsideBurnside引理 PolyaPolyaPolya定理的简单应用 PolyaPolyaP ...

  5. 置换群和Burnside引理,Polya定理

    定义简化版: 置换,就是一个1~n的排列,是一个1~n排列对1~n的映射 置换群,所有的置换的集合. 经常会遇到求本质不同的构造,如旋转不同构,翻转交换不同构等. 不动点:一个置换中,置换后和置换前没 ...

  6. 数学:Burnside引理与Pólya定理

    这个计数定理在考虑对称的计数中非常有用 先给出这个定理的描述,虽然看不太懂: 在一个置换群G={a1,a2,a3--ak}中,把每个置换都写成不相交循环的乘积. 设C1(ak)是在置换ak的作用下不动 ...

  7. Burnside引理与Pólya定理

    正文 hht主要讲了Burnside引理的不完全证明和用Burnside引理推出Pólya定理 下面主要围绕这两方面来讨论 Burnside引理的不完全证明 有一个前置结论hht没有证明,说是需要引入 ...

  8. Luogu P5564 [Celeste-B]Say Goodbye (多项式、FFT、Burnside引理、组合计数)

    题目链接 https://www.luogu.org/problem/P5564 题解 这题最重要的一步是读明白题. 为了方便起见下面设环长可以是\(1\), 最后统计答案时去掉即可. 实际上就相当于 ...

  9. BZOJ 1488 Luogu P4727 [HNOI2009]图的同构 (群论、Burnside引理、组合计数)

    题目链接 (Luogu) https://www.luogu.org/problem/P4727 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.ph ...

最新文章

  1. 百度神马搜狗360网站地图sitemap,主动提交推送插件
  2. 每天一个linux命令(41):ps命令
  3. exec函数介绍(整理)(附带:操作系统实验一:进程控制实验 代码)
  4. StackOverflow How to programmatically unplug replug an arbitrary USB device? 如何以编程方式拔出并重新插入任意USB设备
  5. 推荐系统CTR预估学习路线:深度模型
  6. html 静态资源缓存时间,.htaccess设置静态资源缓存(即浏览器缓存)
  7. Rails测试《十一》添加邮件发送程序及测试邮件发送程序
  8. Vue实现组件props双向绑定解决方案
  9. aspect spring_使用Aspect和Spring Profile进行电子邮件过滤
  10. stl vector 函数_vector :: front()函数以及C ++ STL中的示例
  11. 【指数机制代码实现】差分隐私代码实现系列(十)
  12. oracle 用户创建日期,oracle限制一个用户空闲时间
  13. php 轮播代码生成器,阿里巴巴国际站全屏轮播代码生成器 阿里国际站全屏轮播切换代码阿里巴巴全屏轮播怎么做? 一秒钟美工助手官方网站...
  14. latex制作中英文简历(含模板代码)
  15. Windows Server 2008 使用“net use”挂载网络共享时“发生系统错误53”的解决方案
  16. 笔记:新手SEOer必备的WordPress优化插件
  17. 使用一条sql语句在postgres中查询总数和分页数据
  18. 回归测试(Regression Test)
  19. 与finally单独使用的是try
  20. Unity3d ios 微信链接分享好友,朋友圈的一些坑

热门文章

  1. 判断日期是否为当月最后一天_对比Excel,怎么用Python获取指定月最后一天的日期...
  2. set在python中的用法_python中set的用法:详细源码示例
  3. mybatis 三级缓存查询循序_MyBatis手把手跟我做系列(五) --- 一级缓存与二级缓存
  4. Windows下使用Git配置SSH免密登录
  5. Java事务管理之JDBC
  6. [Ext JS 4] 实战之Grid, Tree Gird 动态添加行
  7. c语言写的心理测试,写了个心理测试的c程序(*^__^*) 嘻嘻……
  8. 设置log缓存_全局变量、事件绑定、缓存爆炸?Node.js内存泄漏问题分析
  9. elt php,ELT(数据仓库技术) 学习
  10. bash 将二进制转换为十进制_用‘栈的思想编写一个十进制转换二进制、八进制或十六进制的程序...