zoukankan      html  css  js  c++  java
  • CodeForces 932E. Team Work

    题目简述:从$n leq 10^9$个人中选取一个非空子集$X$,求所有可能的子集大小的$k leq 5000$次方$|X|^k$之和。

    解:code

    令$[n] = {1, 2, 3, dots, n }$。因为$|emptyset| = 0$,不影响结果。故即求

    $$
    sum_{X subseteq [n]} |X|^k
    = sum_{x=0}^n x^k sum_{X subseteq [n]} [|X|=x] = sum_{x=0}^n inom{n}{x} x^k.
    $$

    利用斯特林数的性质,我们有

    $$ x^n = sum_{k=0}^n k! egin{Bmatrix} n \ k end{Bmatrix} inom{x}{k}. $$

    带入所求式得

    $$
    egin{aligned}
    sum_{x=0}^n inom{n}{x} i^k
    & = sum_{x=0}^n inom{n}{x} sum_{i=0}^k i! egin{Bmatrix} k \ i end{Bmatrix} inom{x}{i} \
    & = sum_{i=0}^k egin{Bmatrix} k \ i end{Bmatrix} sum_{x=i}^n frac {n!} {(n-x)! (x-i)!} \
    & = sum_{i=0}^{min{k, n}} frac {n!} {(n-i)!} egin{Bmatrix} k \ i end{Bmatrix} sum_{x=i}^n inom{n-i}{n-x} \
    & = sum_{i=0}^{min{k, n}} n^{underline{i}} 2^{n-i} egin{Bmatrix} k \ i end{Bmatrix} 
    end{aligned}
    $$

    在计算出第二类斯特林数之后,代入计算即可。时间复杂度为$O(k^2)$。

  • 相关阅读:
    07月26日总结
    07月25日总结
    07月24日总结
    07月23日总结
    07月22日总结
    07月20日总结
    07月19日总结
    spinlock in c++11 based on atomic_flag std::memory_order_acquire
    c++ nullptr
    C++11 新特性: unordered_map 与 map 的对比
  • 原文地址:https://www.cnblogs.com/TinyWong/p/10436347.html
Copyright © 2011-2022 走看看