HNOI2008Cards】的更多相关文章

看了一下polya和burnside定理,感觉还行(就是不会证……) 这题用的是burnside ans=在每个置换群下不动的方案数之和除以置换数 这题有个难点在取模 关于对p(p为素数)取模(涉及到了除法),我总结了两种方法: 已知x mop p=y,要求x/z mod p=? 大体思路是利用乘法逆,将/z转换成*z的逆元即可 一.利用费马小定理 z^p-1 mod p=1 所以z的逆元=power_mod(z,p-2,p) 二.利用拓展欧几里德算法,即exgcd(z,p,x,y) while…
直接给了一个置换群(当然要自己手动加上不洗牌的情况).考虑求不动点数量即可.对于一个置换,求出所有循环的长度,然后设f[i][x][y]为给前i个循环着色后,用了x张红色卡片.y张绿色卡片的方案数,dp一发即可. upd:为啥我写的应该不是假算法却好像也被hack掉了?不管了已经忘了这是啥题肯定哪写挂了. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #includ…