zoukankan      html  css  js  c++  java
  • [HNOI2011]卡农 更为优秀做法

    [HNOI2011]卡农 更为优秀做法


    题意:求

    [[x^{varnothing}y^m]prod_{S evarnothing}(1+x^{S}y) ]

    其中(x)的乘法是异或,(y)的乘法是普通的乘法。

    考虑对((1+x^Sy))做FWT得到

    [sum_{T}(1+(-1)^{|Scap T|}y)x^T ]

    最后FWT的结果是所有的上式点乘在一起,

    [F=sum_{T}x^Tprod_{S evarnothing}(1+(-1)^{|Scap T|}y) ]

    而答案变成了(2^{-n}sum_{S}[x^Sy^m]F)

    [=2^{-n}sum_{T}[y^m]prod_{S evarnothing}(1+(-1)^{|Scap T|}y) ]

    考虑(prod_{S evarnothing}(1+(-1)^{|Scap T|}y)),发现它形如((1+y)^a(1-y)^b)

    打表可得,

    [prod_{S evarnothing}(1+(-1)^{|Scap T|}y)= egin{align} left{ egin{array}{lr} (1+y)^{2^n-1}&T=varnothing\ (1-y)^{2^{n-1}}(1+y)^{2^{n-1}-1}&T evarnothing\ end{array} ight. otag end{align} ]

    则答案变成

    [=2^{-n}[y^m]((1+y)^{2^n-1}+(2^n-1)(1-y)^{2^{n-1}}(1+y)^{2^{n-1}-1}) ]

    考虑前半部分,显然是一个组合数

    后半部分是((1-y)^{2^{n-1}}(1+y)^{2^{n-1}-1}=(1-y)(1-y^2)^{2^{n-1}-1}),显然也是一个组合数

    组合数的上标(O(mod)),下标(O(m)),那么当输入的(n,m)都与(mod)同阶时就得到了一个(O(计算组合数))的做法。

  • 相关阅读:
    学习进度笔记4
    学习进度笔记3
    学习进度笔记2
    学习进度笔记1
    《梦断代码》提及文献
    《梦断代码》阅读笔记6
    《梦断代码》阅读笔记5
    需求征集系统开发进度5
    《梦断代码》阅读笔记4
    spark filter
  • 原文地址:https://www.cnblogs.com/xzz_233/p/13347229.html
Copyright © 2011-2022 走看看