$color$有色图
不想看题解的请速撤离
为防被骂灌输题解,撤离缓冲区
这里没字
$Ploya$神题一道,所以我自己做不出来,颓了一部分题解。
由于理(颓题)解不(没)深(脸)中途又拿了$std$对拍(输出中间结果并qj了自己的代码)
但是启示的确很多
按照题面意思来看,好像是点的交换,但是不是。。本题中的置换其实是边与边的置换
因为显然颜色是涂在边上的,至于点的交换可以看成接向两个点的边集的交换
但是归根到底还是先有点动再有边动,所以我们仍然考虑将通过点的置换来求出边的等价置换。
发现没有关于颜色使用的限制,所以可以使用$Polya$定理,那么只需要找循环节数量就行了
考虑一条边在什么时候会循环到自己原来的位置,从换点的角度。
直观地感到跟点循环的大小有关,比如有一个长度为$L$的点循环,有个边连接其中的两个点
可以想(猜)到这个点循环里,所有边都是等效的,也就是都在同一次数后循环回来(比如$L$)
那么一共有$C_L^2$个点对(边),每个边的循环节长度都是$L$
循环接数量就是$cnt(L)=\frac{C_L^2}{L}=\frac{L*(L-1)}{2*L}=\frac{L-1}{2}$
然而仔细思考就会发现我上一句话伪了
因为$L$为偶数时,正对着的边每过$\frac{L}{2}$就回到原来位置了
改改改
当$cnt(L)=\frac{\frac{L*(L-2)}{2}}{L}+\frac{L/2}{L/2}=\frac{L-2}{2}+1=\frac{L}{2} (L$%$2==0)$
合起来成了$cnt(L)=\lfloor \frac{L}{2} \rfloor$
这是一个点循环内部的,还有两个循环之间的呢
考虑一个循环长度为$L1$的点循环和另一个循环长度为$L2$的点循环
显然当转过$lcm(L1,L2)$次后,原来的两个点又碰到一起了
仔细思考就会发现上一句话无懈可击
然后有$L1*L2$个点对,循环节数量$cnt(L1,L2)=gcd(L1,L2)$
好,现在就是给定一个点的变换的局面,我们知道了这种局面有多少循环节
然而需要保证点是有序的,然后局面数量阶乘级别了..
如果点无序好像比较少,试着求出有序情况下的方案数.
我们假定图的形状一定,然后我们按照位置固定的顺序把图上点的序号一个个按在序列上
显然这样的话,发生任何点的交换都会使序列不同,也就不担心漏掉了
目前是$num=n!$,会重,考虑重了多少次
比如一段长度为$L1$的点循环,在序列上占有一个固定的子序列
子序列内部,不管怎么循环左右移动这个点循环还是这个循环..
这种同构,每个循环$i$都有$L_i$种,去重,目前$num=\frac{n!}{\pi L_i}$
然后点循环之间,相同长度的点循环的子序列一交换,又成了新序列,可是局面是一种局面
除掉,设长度$j$出现次数为$t_j$,则$num=\frac{n!}{\Pi L_i \Pi t_j!}$
好了现在只要找到点无序时有哪些方案就行了
这时候$n$很小的特性就有用了,可以爆搜!
试着搜一下发现其实合法状态很少,只有3e5左右
于是这题没了
其实对于我这种大弱鸡来说,这确乎是个神题..
虽然颓了题解,可是自己想不到的神仙思路就应该积累不是吗..
学到了一种数据范围的方案统计技巧
学到了一种等价类计数的思维方式,转化为较简单的置换再求回来
学会了如何去重
随机推荐
- Python3 学习笔记之 类型/运算符
类型/运算符: 类型: 整数 字符串 浮点数 布尔类型 类型转换: 检查类型: 算术操作符: 逻辑操作符: 优先级:
- Egret资源跨域问题
在服务器上配置了允许跨域还不够,还需要在引擎配置允许跨域,不然texture无法在webgl上下文中渲染 会报一个类似于The cross-origin image at 的错误, 只需要在egret ...
- 前端之CSS基础及使用方法
CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染). CSS语法 CSS实例 ...
- 利用js种的正则删除html标签
public static string NoHTML(string Htmlstring) { //删除脚本 Htmlstring = Regex.Replace(Htmlstring, @&quo ...
- 游戏服务器和Web服务器的区别
用Go语言写游戏服务器也有一个多月了,也能够明显的感受到两者的区别.这篇文章就是想具体的聊聊其中的区别.当然,在了解区别之间,我们先简单的了解一下Go语言本身. 1. Go语言的特点 Go语言跟其他的 ...
- Mac 10.14在新窗口中打开文件夹
Mac 10.14 Open folders in new window (high Sierra) System Preferences > Dock. Change "Prefer ...
- Loj10222佳佳的 Fibonacci
Description Analysis 10分:暴力+把m和n输反,你将获得10分的好成绩(Just like me.) 70分:暴力+把m和n输对,你将获得70分的好成绩 100分:矩阵加速 设 ...
- python学习(内置函数)
1.id()返回对象的内存地址 a = 1 print id(a) print id(1) 2.int()用于将数据类型转换为整型 a = " b = 2 print int(a) + b ...
- Hash Table Implementation in C++
对于字符串,所用的hash函数为: size_t _Hash_bytes(const void* ptr, size_t len, size_t seed) { static const size_t ...
- eclipse安装相关
一 安装相关 1.下载eclipse(这里我下载了个简单版本) https://www.eclipse.org/downloads/packages/