Ploya定理学习笔记
由于自己的作息极其不规律导致比赛被打爆了 但是有的时候状态其实还行。
关于Ploya定理其实特别有意思 这里粘一个[dalao的blog](https://blog.csdn.net/lyc1635566ty/article/details/52545355)
以后有时间了我再写Ploya定理的证明吧。
LINK:[POJ Color](http://poj.org/problem?id=2154)
题目大意:给一个长度为n的项链用n种颜色进行染色 项链可以旋转求有多少种本质不同的方案数。
怎么说,ploya裸题 显然一共有n种置换 每种置换之中循环节的个数是多少呢?
经过不断试验 发现对于旋转i个位置的置换 循环节个数为gcd(i,n);
于是本质不同的方案数$L=\frac{1}{|G|}\sum{n^{gcd(i,n)}}$
但是$n\leq 1000000000$ 且有T组询问$T\leq 3500$
我们暴力显然是过不了的 考虑一番特殊性质 设$d=gcd(i,n)$那么显然有d|n d一定是n的因数我们知道n的因数的数量级有$\sqrt{n}$
所以我们要是可以先办法对于$\sqrt{n}$这么多个因数各自算出数量显然也是可以得到答案的。
那么 现在存在一个子问题 $\sum_{i=1}^{n}{gcd(i,n)}$ 这个东西怎么求.
这是一个非常经典的问题了,这等价于 $\sum_{d|n}\sum_{i=1}^{\frac{n}{d}}{d\cdot [gcd(i,\frac{n}{d})=1]}$
好像推不下去了 其实这个时候该反演了...我们莫比乌斯反演一下
$\sum_{k|n}\mu(k)\sum_{d|\frac{n}{k}}\frac{n}{k}$
我也无能为力了 推到死胡同了...自闭。
那么我们从另一个方面再继续推 $\sum_{d|n}\sum_{i=1}^{\frac{n}{d}}{d\cdot [gcd(i,\frac{n}{d})=1]}$
我们发现后面那个东西其实是欧拉函数 那么上式=$\sum_{d|n}d\cdot \phi(\frac{n}{d})$
这里我们暴力枚举d 再暴力算$\phi(\frac{n}{d})$肯定会T
不妨将n质因数分解了然后 接爆搜因数 这样计算欧拉函数会快很多很多 复杂度sqrt(n)+1000左右不算很高.
当然 还有一种异常靠谱的方法 这里给出[blog链接](https://www.cnblogs.com/zhchoutai/p/8450361.html) 不太懂这种方法.
回归到原题上求: $L=\frac{1}{|n|}\sum{n^{gcd(i,n)}}$ 其实就就是 d变成了 $d^{n-1}$罢了 (爆搜可行..
Ploya定理学习笔记的更多相关文章
- Burnside引理与Polya定理 学习笔记
原文链接www.cnblogs.com/zhouzhendong/p/Burnside-Polya.html 问题模型 有一个长度为 $n$ 的序列,序列中的每一个元素有 $m$ 种取值. 如果两个序 ...
- Lucas定理学习笔记
从这里开始 一个有趣的问题 扩展Lucas算法 一个有趣的问题 题目大意 给定$n, m, p$,求$C_{n}^{m}$除以$p$后的余数. Subtask#1 $0\leqslant m\leq ...
- Master定理学习笔记
前言 \(Master\)定理,又称主定理,用于程序的时间复杂度计算,核心思想是分治,近几年\(Noip\)常考时间复杂度的题目,都需要主定理进行运算. 前置 我们常见的程序时间复杂度有: \(O(n ...
- Matrix_tree Theorem 矩阵树定理学习笔记
Matrix_tree Theorem: 给定一个无向图, 定义矩阵A A[i][j] = - (<i, j>之间的边数) A[i][i] = 点i的度数 其生成树的个数等于 A的任意n ...
- 生成树计数 Matrix-Tree 定理 学习笔记
一直都知道要用Matrix-Tree定理来解决生成树计数问题,但是拖到今天才来学.博主数学不好也只能跟着各位大佬博客学一下它的应用以及会做题,证明实在是不会. 推荐博客: https://www.cn ...
- Polya 定理 学习笔记
群 群的定义 我们定义,对于一个集合 \(G\) 以及二元运算 \(\times\),如果满足以下四种性质,那我们就称 \((G,\times)\) 为一个群. 1. 封闭性 对于 \(a\in G, ...
- 矩阵树定理&BEST定理学习笔记
终于学到这个了,本来准备省选前学来着的? 前置知识:矩阵行列式 矩阵树定理 矩阵树定理说的大概就是这样一件事:对于一张无向图 \(G\),我们记 \(D\) 为其度数矩阵,满足 \(D_{i,i}=\ ...
- Pólya 定理学习笔记
在介绍\(Polya\) 定理前,先来介绍一下群论(大概了解一下就好): 群是满足下列要求的集合: 封闭性:即有一个操作使对于这个集合中每个元素操作完都使这个集合中的元素 结合律:即对于上面那个操作有 ...
- [HEOI2015]小Z的房间(矩阵树定理学习笔记)
题目描述 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. 你想要打通一 ...
随机推荐
- 02-springboot整合elasticsearch初识
1.ReactiveElasticsearchOperations 根据springboot官网提供的Elasticsearch操作,除了用rest风格的,还有reactiveElasticS ...
- HDU 2157 How many ways?? 题解
题目 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线 ...
- Windows配置Delve的测试环境
引言 自己最近在玩Go,在开发一些项目的时候需要调试,由于之前都是在GoLand上写的,但是这个IDE启动太慢并且不轻便.并且自己之前很多项目都是在Vscode中编写的,所以特意想在Vscode中配置 ...
- 解决nginx 出现 413:Request Entity Too Large
去网上搜了一下,说是上传文件大小超过nginx的限制大小(nginx据说默认只能上传不超过2MB的文件) 解决方法: #nginx/conf/nginx.conf http { ... client_ ...
- 解决alert在ios版微信中显示url的问题(重写alert)
为了解决alert在ios版微信中显示url的问题 window.alert = function(name){ var iframe = document.createElement("I ...
- 如何写一个自己的HashMap
想必很多Java工程师出去面试的时候都会被问到HashMap的底层实现原理,很多人觉得没什么必要,反正我会用就行,就我的感觉而言,在初期确实没什么必要,但是站在公司角度想,如果面试者连底层实现都搞定了 ...
- NVIDIA GPU Turing架构简述
NVIDIA GPU Turing架构简述 本文摘抄自Turing官方白皮书:https://www.nvidia.com/content/dam/en-zz/Solutions/design-vis ...
- java中实现无限层级的树形结构
本文展示了两个实现方法的代码.两个代码的实现方法不同,代码2更为简单. 先看一下最后实现的结果: 最后结果-json 代码1: 实现过程: 1.传入一段json字符串 2.将字符串转换成对象存入节点列 ...
- MapReduce之自定义分区器Partitioner
@ 目录 问题引出 默认Partitioner分区 自定义Partitioner步骤 Partition分区案例实操 分区总结 问题引出 要求将统计结果按照条件输出到不同文件中(分区). 比如:将统计 ...
- 好用的npm模块记录
标签: node node盛行的今天,前端开发已经离不开npm模块的使用,大名鼎鼎的如gulp,webpack等,此处不多说,除了它们有那么几个常用的npm模块是我喜欢并依赖它的,下面就是我平时工作中 ...