【清华集训2014】玛里苟斯

题意

做法

结论1:结果是整数或整数+\(\frac{1}{2}\)

证明:
假设\(n\)个数对应线性基的大小为\(base\)
考虑对于任意能表示出来的数\(x\),对于除线性基外元素的任意\(2^{n-base}\)种取法后,在线性基里取,都有唯一一种方法将\(x\)表示出来
故每个数出现的方案数均为\(2^{n-base}\),出现的概率为\(2^{-base}\)
\(ans=(\sum\limits_{x能被线性基表示}x^k)\times 2^{-base}\)
\(x^k=(\sum 2^{x_i})^k\),其中\(x_i\)表示的是\(x\)的有效位
每个括号内选取一个单项式,即\(2^{\sum\limits_{i=1}^k a_i}\)
\(|\{a\}|=c\),我们抛开其他所有位置,单纯看\(\{a\}\),有\(2^{base-c}\)\(x\)中有\(\{a\}\),贡献就为\(2^{\sum\limits_{i=1}^k a_i}\times 2^{base-c}\times 2^{base}=2^{\sum\limits_{i=1}^k a_i}\times 2^{-c}\)
\(|\{a\}|=c\),若不是整数,只有两种情况:\(c=1,\{a\}=\{0\}\)\(c=2,\{a\}=\{0,1\}\)

再来考虑这道题

  • \(k=1\)
    单独考虑每一位上的\(1\),我们都有\(2^{n-base}\times 2^{base-1}=2^{n-1}\)中方法取到,概率为\(2^{-1}\)
    答案即为\(\sum 2^i\times 2^{-1}\)(其中\(i\)为线性基上存在第\(i\)位)
  • \(k=2\)
    \(ans=\sum\sum 2^{i+j}P_{i,j}\)\(P_{i,j}\)是系数),与\(k=1\)类似
  • \(k\ge 3\)
    考虑边界情况\(k=3\),由于答案\(<2^{63}\),仅考虑\(\{a\}=1,\{a\}=\{base-1\}\)的情况
    \(2^{3(base-1)}\times 2^{-1}<2^{63}\),故\(base\le 22\),而因为我们仅考虑了一种可能的\(x\),所以实际情况的\(base\)比这还要小很多
    所以我们可以暴力枚举\(2^{base}\)种可能的\(x\),再统计\(\sum x^k\times 2^{-base}\)
    \(x^k\)可能会很大,但\(x^k\times 2^{-base}<2^{63}\),所以我们实际在程序中将\(x\)表示为\(a\times 2^{-base}+b\)的形式
posted @ 2020-06-02 16:51  Grice  阅读(191)  评论(0编辑  收藏  举报