• Luogu P4707 重返现世


    题目描述

    为了打开返回现世的大门,Yopilla 需要制作开启大门的钥匙。Yopilla 所在的迷失大陆有 (n) 种原料,只需要集齐任意 (k) 种,就可以开始制作。

    Yopilla 来到了迷失大陆的核心地域。每个单位时间,这片地域就会随机生成一种原料。每种原料被生成的概率是不同的,第 ii种原料被生成的概率是$ frac{p_i}{m} $。如果 Yopilla 没有这种原料,那么就可以进行收集。

    Yopilla 急于知道,他收集到任意 kk 种原料的期望时间,答案对 (998244353) 取模。

    输入输出格式

    输入格式:

    第一行三个数 (n, k, m)

    第二行 nn 个数 (p_1, p_2, ..., p_np1,p2,...,pn)

    输出格式:

    输出一行。

    输入输出样例

    输入样例#1:

    复制

    3 3 3
    1 1 1
    

    输出样例#1:

    复制

    499122182
    

    说明

    对于 (10 \%) 的数据,(p_1 = p_2 = ... = p_m)

    对于另外 (10 \%) 的数据,(k = n)

    对于 (70 \%) 的数据,(n le 100)

    对于 (100 \%)的数据,(1 le n le 1000),(1 le k le n, lvert n - k vert le 10,0 le p_i le m, sum p = m, 1 le m le 100000)

    min-max反演的推广:kth min-max反演

    下面的证明转载自这位dalao的博客:https://blog.csdn.net/ez_2016gdgzoi471/article/details/81416333。

    我们考虑构造一个容斥系数(f(x)),使得

    [kthmax(S)=sum_{T⊆S}f(|T|)min(T) ]

    $考虑第x+1大的元素会被统计到的贡献。 ( )这个贡献为sum_{i=0}^{x}C_{x}^{i}f(i+1) ( 上面这个式子就是说前)x(大的元素选或不选都无所谓,然后必选第)x+1$大的元素的方案数。

    [[x==k-1]=displaystylesum_{i=0}^{x}C_{x}^{i}f(i+1) ]

    二项式反演一下

    [f(x+1)=displaystylesum_{i=0}^{x}(-1)^{x-i}C_{x}^{i}[i==k-1] ]

    得到

    [f(x+1)=(-1)^{x-(k-1)}C_{x}^{i-1} ]

    因此

    [f(x)=(-1)^{x-k}C_{x-1}^{k-1} ]

    综上,

    [kthmax(s)=displaystylesum_{T subseteq S}f(|T|)min(T)\ =sum_{Tsubseteq S}(-1)^{|T|-k}C_{|T|-1}^{k-1}min(T) ]


    本题就是求第((n-k+1))大的物品的出现的期望值。

    我们直接套公式:

    [kthmax(s)displaystyle=sum_{Tsubseteq S}(-1)^{|T|-k}C_{|T|-1}^{k-1}min(T) ]


    显然:(min(T)=frac{m}{displaystylesum_{i in S}p_i})

    然而天真的我以为可以直接将这个值DP出来,然后做自闭了。所以遇到这种非线性的求和还是不要乱来...

    然后直接贴dalao的题解(逃)https://www.cnblogs.com/Trrui/p/9994668.html

  • 相关阅读:
    重写trim方法时摸索出的删除数组长度的思路
    常用String类方法-Java
    Lambda入门,看这一篇幅就够了
    利用Spring AOP的通知类型以及创建通知
    SpringAOP基础
    Java开发中解决Js的跨域问题
    从properties中读取配置创建对象
    SpringBoot打包为war包,并在tomcat中运行
    查看SpringBoot应用中的嵌入式tomcat的版本
    Mybatis中返回Map
  • 原文地址:https://www.cnblogs.com/hchhch233/p/10001056.html
Copyright © 2020-2023  润新知