杂题
题意
\(n\)个人在玩分组游戏,有\(c\)个组可以选择,相邻两人不能去同组。同时,有\(k\)个人之间可能还有\(m\)个限制条件,使得其不同处于同组。求方案数
\(n,c\le 2^{60},k\le 20,m\le {k\choose 2}\)
做法
将\(k\)个人称为特殊点,考虑固定分组后的两个相邻的特殊点,令其间有\(len\)个普通点,可根据两个特殊点组是否相同用矩阵快速幂算出其方案数
枚举在同一组的特殊点,其对方案数的影响很容易能得出
可以看到子集卷积可以解决
暴力枚举特殊点分成了多少组,复杂度是\(O(k^32^k)\)的
将单个组贡献写成集合幂级数\(F(x)\),\(ans=[x^{2^U}]\sum\limits_{i=1}^k {c\choose i}F(x)^i=[x^{2^U}]\sum\limits_{i=0}^k {c\choose i}F(x)^i=[x^{2^U}](F(x)+1)^c\)
于是可以\(O(n^22^n)\)计算
题外话
把一个**题误认为是神仙题了...