zoukankan      html  css  js  c++  java
  • CF1336E2

    CF1336E2

    考虑答案为:

    [F(x)=prod (1+x^{a_i}) ]

    (G_c(x)=sum [ extrm{popcount}(i)=c]x^i),那么有对于某个 (c),答案为 (F(x)G_c(x)[x^0])

    (F(x)) 取 FWT,观察到 FWT((1+x^{a_i})) 的点值只有 (0/2),所以整体做完 FWT 之后的点值只有 (2^n)(0),且任意一位为 (0) 此位的点值就是 (0)

    且不为 (0)(i) 会满足 (forall j, extrm{popcount}(i&a_j)mod 2=0),设 (c(i,j)) 表示 ([ extrm{popcount}(i&j)mod 2=0]),则有如果 (c(i,j)=1,c(k,j)=1),那么 (c(ioplus j,k)=1)

    不难看出 (c(x,y)) 的左右两边都满足此性质,于是两边均为封闭的集合(构成异或意义下的一个群)显然的事实是,(y) 部分的集合就是 (a_i) 处任意异或可以得到的所有可能的值,当此集合变大时,相应的 (x) 处的集合会变小,两个部分均可以使用线性基描述,可以证明两个部分的线性基大小之和为 (m)

    此时,我们有两种思路:

    • 维护可能异或出来的值并暴力。
    • 维护 FWT 后有点值的位置并暴力。

    至此,可以在 (mathcal O(2^{m/2})) 的复杂度解决此问题。

  • 相关阅读:
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    团队作业-随堂小测(同学录)
    Alpha 冲刺 (5/10)
    LeetCode-1
    c++向量
    软件工程实践总结作业
    个人作业——软件产品案例分析
    个人技术博客Alpha----Android Studio学习
  • 原文地址:https://www.cnblogs.com/Soulist/p/14067131.html
Copyright © 2011-2022 走看看