码迷,mamicode.com
首页 > 其他好文 > 详细

SGU - 282

时间:2019-01-04 20:26:36      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:直接   技术分享   编号   集合   个数   tar   枚举   就是   ble   

SGU - 282

题意:
技术分享图片

 

本质不同的集合:不存在两个方案重新编号之后对应的边集相同(对于所有x,y,,(x,y)边颜色都相同)。

(1≤ N≤ 53, 1≤ M≤ 1000)

对P取模

 

本质不同,想到置换

置换在哪里?

就是重新编号

本质是一个n!大小的置换群

 

不能枚举每一个置换了,考虑对相同的置换一起处理

置换之后也要找环,所以直接枚举环的情况,处理对应这种环的组合的置换的出现次数,再处理环的组合的不动点

自然数拆分出环

环长为li,有k个,对应置换个数:

$\frac{n!}{(l1!*l2!..lk!)}*((l1-1)!)*((l2-1)!)*((lk-1)!)$

每个置换的不动点个数:

考虑环自己内部连边的“环”个数:$1+\lfloor \frac{l-2}{2} \rfloor$

证明考虑边上相隔1一定一种,相隔若干会连出一些,手画几个

2->1

3->1

4->2

5->2

6->3

7->3

环与环之间的连边的“环”个数:$gcd(l1,l2)$

一个连边的颜色,会走$lcm(l1,l2)$才会重复,

期间l1的每个点连出去了lcm(l1,l2)/l1=l2/gcd(l1,l2)

一共连出去l2个点,每确定一个颜色就确定了l2/gcd(l1,l2)个颜色,所以共有gcd(l1,l2)个“环”

环总数tot

每个环m种颜色,m^tot即可。

 

 

1.自然数拆分+计算对应置换个数->枚举所有置换

2.每个自然数拆分计算不动点个数+再乘上对应置换个数->处理所有不动点

完毕。

 

SGU - 282

标签:直接   技术分享   编号   集合   个数   tar   枚举   就是   ble   

原文地址:https://www.cnblogs.com/Miracevin/p/10222149.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!