zoukankan      html  css  js  c++  java
  • 杂题

    题意

    (n)个人在玩分组游戏,有(c)个组可以选择,相邻两人不能去同组。同时,有(k)个人之间可能还有(m)个限制条件,使得其不同处于同组。求方案数
    (n,cle 2^{60},kle 20,mle {kchoose 2})

    做法

    (k)个人称为特殊点,考虑固定分组后的两个相邻的特殊点,令其间有(len)个普通点,可根据两个特殊点组是否相同用矩阵快速幂算出其方案数

    枚举在同一组的特殊点,其对方案数的影响很容易能得出
    可以看到子集卷积可以解决

    暴力枚举特殊点分成了多少组,复杂度是(O(k^32^k))

    将单个组贡献写成集合幂级数(F(x))(ans=[x^{2^U}]sumlimits_{i=1}^k {cchoose i}F(x)^i=[x^{2^U}]sumlimits_{i=0}^k {cchoose i}F(x)^i=[x^{2^U}](F(x)+1)^c)
    于是可以(O(n^22^n))计算

    题外话

    把一个**题误认为是神仙题了...

  • 相关阅读:
    类的定义
    面向对象与面向过程介绍
    跨目录导入模块
    正则表达式re模块
    常用工具包(模块)
    生成器generator
    闭包
    命名空间name space
    函数的递归
    POJ1062
  • 原文地址:https://www.cnblogs.com/Grice/p/13767773.html
Copyright © 2011-2022 走看看