zoukankan      html  css  js  c++  java
  • 重返现世——题解

    \(orz\)出题人,神仙题啊。

    题目链接luogu P4707

    • 题意
      给一个\(n\)元集合\(S\),每一次从中选出一个元素,第\(i\)个元素被选出的概率为\(\frac{p_i}{m}\),求选出\(k\)个不同元素的期望次数。
      \(n \leq 1000\), \(n-k\leq 10\), \(m\leq 10000\), \(p_i\leq m\), \(\sum p_i=m\)
      \(timelimit=2.00s\) \(memorylimit=125MB\)

    • 前置知识
      首先一看就知道要用\(min-max\)容斥,下面只给出式子,具体证明略。
      普通形式:

    \[max(S)=\sum_{T \subseteq S} (-1)^{|T|-1} min(T) \]

      扩展(第\(k\)大):

    \[kthmax(S)=\sum_{T\subseteq S} (-1)^{|T|-k} \binom{|T|-1}{k-1}min(T) \]

      \(min\)的求法同理。
      这东西可以扩展到期望。

    • 题解
      现在我们回到原题。
      \(k \to n-k+1\)
      这样就可以直接套\(kthmax\)的式子,即

    \[E(kthmax(S))=\sum_{T\subseteq S} (-1)^{|T|-k} \binom{|T|-k}{k-1}E(min(T)) \]

      这样我们就得到了一个十分暴力的做法,直接枚举\(S\)\(2^n\)个子集,统计答案。
      很显然这样通过不了全部数据,考虑对这个进行优化。
      观察一下数据范围,有\(m\le 10000\),限制了值域,所以我们考虑\(DP\)
      设\(f_{i,j,k}\)表示前\(i\)个元素,选出来的子集元素概率和为\(j\),是\(kth\)意义下的\(\sum_{T\subseteq S} (-1)^{|T|-k} \binom{|T|-1}{k-1}\)
      我们令\(S_i\)表示前\(i\)个元素组成的集合,那么上面的式子写成数学形式就是这样:

    \[f_{i,j,k}=\sum_{T\subseteq S_i} [(\sum_{t\in T} pt)=j] (-1)^{|T|-k} \binom{|T|-1}{k-1} \]

      所以有

    \[f_{i,j,k}=\sum_{T\subseteq S_{i-1}} [(\sum_{t\in T} pt)=j] (-1)^{|T|-k} \binom{|T|-1}{k-1}+\sum_{T\subseteq S_{i-1}} [(\sum_{t\in T} pt)=j-pi] (-1)^{|T|+1-k} \binom{|T|+1-1}{k-1} \]

      根据这个式子,我们对\(f\)的定义,以及组合数中的\(\binom{i}{j}=\binom{i-1}{j}+\binom{i-1}{j-1}\),可以得到

    \[f_{i,j,k}=f_{i-1,j,k}+(-1)\sum_{T\subseteq S_{i-1}} [(\sum_{t\in T} pt)=j-pi] (-1)^{|T|-k} \binom{|T|-1}{k-1}+\sum_{T\subseteq S_{i-1}} [(\sum_{t\in T} pt)=j-pi] (-1)^{|T|-(k-1)} \binom{|T|-1}{k-2} \]

      所以

    \[f_{i,j,k}=f_{i-1,j,k}-f_{i-1,j-p_i,k}+f_{i-1,j-p_i,k-1} \]

      这样主干就出来了。

    • 一些细节
      首先是边界,可以把\(i=1\)代入手算,然后就有\(f_{0,0,0}=0, f_{0,0,k}=-1\)
      接着因为空间的限制,将\(i\)那一维滚动掉,这样就可以实现了。
      最后统计答案直接枚举\(j\),算一下就好。
  • 相关阅读:
    Ubuntu下的Apache、Mysql、PHP环境搭建
    JS代码引用位置问题-转
    mysql设置定时任务
    js setTimeout函数
    JavaScript向window onload添加加载函数
    写在开博之时
    WPF笔记(一)之初识XMAL
    创建理想的数据库索引
    常见负载均衡算法
    Java设计模式之外观模式
  • 原文地址:https://www.cnblogs.com/leukocyte/p/13281969.html
Copyright © 2011-2022 走看看