zoukankan      html  css  js  c++  java
  • Grakn Forces 2020 I. Bitwise Magic

    题意

    给定(k,c),再给定长度为(n)的序列((1le nle 2^c-k),(kle a_ile 2^c-1)
    进行(k)次操作,每次选择一个位置给(a_i-1)
    (k)次操作后,最后异或和为(x)的概率为多少
    输出(x)分别为(0sim 2^c-1)时的答案
    (k,cle 16)

    做法

    求方案数,写成指数多项式的形式。另外对常数项(x),定义(x^i imes x^j=x^{ioplus j})
    (egin{aligned} F(z)=prodlimits_{i=1}^n(sumlimits_{j=0}^k x^{a_i-koplus a_i}frac{z^j}{j!}) end{aligned})

    (x)沃什变换,对每一位单独处理
    暴力计算是(O(2^ck^2n+2^cc))

    我们发现,对于序列({b_i=a-ioplus a}),对于题目给出的限制,最多只有(192)种不同的序列
    这样直接算是(O(2^ck^2192))的,不过这样还是过不了

    有个小优化,对于位置(i),可以把({c_k=ioplus k\% 2})相同的再压一下,然后用(k^2)算某多项式的次幂
    然后总共只要算(1400490)个不同的多项式
    复杂度(O(1400490k^2))

  • 相关阅读:
    Jupyter notebook 读取文件的问题
    机器学习-数据清洗和特征选择
    机器学习-逻辑回归
    Java教程
    13.并发编程
    redis 实现
    CyclicBarrier介绍
    Future模式衍生出来的更高级的应用
    并发编程 futuretask
    整理POST请求方式
  • 原文地址:https://www.cnblogs.com/Grice/p/13782423.html
Copyright © 2011-2022 走看看