摘要: 置换数量是阶乘级别的,但容易发现本质不同的点的置换数量仅仅是n的整数拆分个数,OEIS(或者写个dp或者暴力)一下会发现不是很大,当n=53时约在3e5左右。 于是暴力枚举点的置换,并且发现根据点的置换我们得到的实际上是边的置换,暴力数一下循环节就好了。3e5*50*50,luogu上过掉了。诶怎么 阅读全文
posted @ 2018-12-23 19:16 Gloid 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 直接给了一个置换群(当然要自己手动加上不洗牌的情况)。考虑求不动点数量即可。对于一个置换,求出所有循环的长度,然后设f[i][x][y]为给前i个循环着色后,用了x张红色卡片、y张绿色卡片的方案数,dp一发即可。 upd:为啥我写的应该不是假算法却好像也被hack掉了?不管了已经忘了这是啥题肯定哪写 阅读全文
posted @ 2018-12-23 16:12 Gloid 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 对于置换0→i,1→i+1……,其中包含0的循环的元素个数显然是n/gcd(i,n),由对称性,循环节个数即为gcd(i,n)。 那么要求的即为Σngcd(i,n)/n(i=0~n-1,也即1~n)。考虑枚举gcd。显然gcd(i,n)=x在该范围内解的个数是φ(n/x)。分解一下质因数即可。 阅读全文
posted @ 2018-12-23 15:18 Gloid 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 参考:刘汝佳《算法竞赛入门经典训练指南》 感觉是非常远古的东西了,几乎从来没有看到过需要用这个的题,还是学一发以防翻车。 置换:排列的一一映射。置换乘法相当于函数复合。满足结合律,不满足交换律。 置换的循环分解:即将置换看成一张有向图,分解成若干循环。循环的数量称为循环节。 以置换集合来描述等价关系 阅读全文
posted @ 2018-12-23 14:38 Gloid 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 考虑乱搞,用矩形框圆放KD-Tree上,如果当前删除的圆和矩形有交就递归下去删。为防止被卡,将坐标系旋转一定角度即可。注意eps稍微设大一点,最好开上long double。 阅读全文
posted @ 2018-12-23 13:23 Gloid 阅读(207) 评论(0) 推荐(0) 编辑