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(计算组合数))的做法。

  • 相关阅读:
    JS 跨域问题。。
    LInq 中使用正则表达试
    CreateXMl
    DeleteXMl
    SameNameFile 比较两个文件夹是否同名
    UpdateXML
    AddXML
    AsDataView Dataview ,DataTable 跟linq的相互转化
    AttributeToElement
    WoreTime 计算单词出现的次数
  • 原文地址:https://www.cnblogs.com/xzz_233/p/13347229.html
Copyright © 2011-2022 走看看