zoukankan      html  css  js  c++  java
  • uoj36 玛里苟斯 高斯消元做法

    我的做法好像网上很少。当然不是我自己想的,从一个古老的新浪博客颓的。不需要任何特判!

    其实就是一些套路。首先当然要算(a_i)的范围。

    设最高位是(2^x),考虑这一位能异或出来的概率。很多方法都能算出来(frac{1}{2})

    所以(frac{1}{2}*2^{xk}<2^{63}) 也就是(xk<64)

    这样就知道了(k=1)的20分做法。每一位概率都是(frac{1}{2}),期望的线性性加起来就好了。

    正确的做法也很简单,但是需要一些套路。

    首先求线性基,每一个数作为异或和的概率相等,所以直接把原序列换成线性基。

    然后把(x^k)这个式子展开,按照二进制位。可以算每一项的系数,然后只有概率要求了。

    又是一个套路,如果异或方程组有(m)个变量,(n)个非零行,解的个数就是(2^{m-n})。挺好证的。概率就是(frac{1}{2^n})

    然后就没啥了。我连这都不会写是不是没救了。

    复杂度O(应该没错)

    代码

    这个题思想挺像 先用线性基缩小范围,再高斯消元

  • 相关阅读:
    1372
    SPOJ
    HDU 3966-Aragorn's Story 树链剖分+树状数组
    LightOJ 1348
    HihoCoder 1568 不一定合法括号序列
    LightOJ 1343
    LightOJ 1266
    LightOJ 1112
    HihoCoder 1328 BFS 搜索
    链表交集、合并、排序
  • 原文地址:https://www.cnblogs.com/happyguy/p/14485240.html
Copyright © 2011-2022 走看看