正题

题目链接:https://www.luogu.com.cn/problem/P4707


题目大意

\(n\)个物品,每次生成一种物品,第\(i\)个被生成的概率是\(\frac{p_i}{m}\),求生成至少\(k\)种物品的期望次数。

\(1\leq n\leq 1000,max\{n-10,1\}\leq k\leq n,1\leq m\leq 10000\)


解题思路

求的是\(E(min_k\{S\})\),但是\(k\)很大,如果令\(k=n-k+1\)的话就是求\(E(max_k\{S\})\)了

然后就可以用\(min-max\)容斥的扩展了

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

然后\(min\)的话挺好搞的,因为这个集合中的所有物品都可以视为一个物品,所以期望就是\(\frac{m}{\sum_{i\in T}p_i}\)

然后因为显然不能暴力枚举集合,所以我们考虑\(dp\)。设\(f_{k,i,j}\)表示做到第\(k\)个物品,目前的\(\sum_{i\in T}p_i=m\),然后上面那个式子的\('k'\)的值是\(j\)时上面那个式子的和。

因为有个组合数转移起来挺麻烦的,不选的话就是\(f_{k-1,i,j}\)不再多说,但是如果选的话,那个\((-1)^{|T|-k}\)直接取反就好了,但是那个组合数的上那个也加了\(1\)。

这里我们直接用那个组合数的式子\(\binom{n}{m}=\binom{n-1}{m-1}+\binom{n-1}{m}\)。虽然上面那个式子的\(k\)是不变的,但是我们记录了其他的\(k\)的值,其实如果选的话转移就是

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

这样我们的式子就是\(O(nmk)\)的了。

然后初始化的话为了满足后面的定义,让所有的\(f_{0,0,i}=-1(i\in[1,m])\)就好了。


#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int P=998244353;
int n,k,m,f[11000][11],ans;
int power(int x,int b){
int ans=1;
while(b){
if(b&1)ans=1ll*ans*x%P;
x=1ll*x*x%P;b>>=1;
}
return ans;
}
int main()
{
scanf("%d%d%d",&n,&k,&m);k=n-k+1;
for(int p=1;p<=k;p++)f[0][p]=-1;
for(int p=1;p<=n;p++){
int x;scanf("%d",&x);
for(int i=m;i>=x;i--)
for(int j=k;j>=1;j--)
(f[i][j]+=(f[i-x][j-1]-f[i-x][j]+P)%P)%=P;
}
for(int p=1;p<=m;p++)
(ans+=1ll*f[p][k]*power(p,P-2)%P)%=P;
printf("%d\n",1ll*ans*m%P);
return 0;
}

P4707-重返现世【dp,数学期望,扩展min-max容斥】的更多相关文章

  1. 洛谷P4707 重返现世 [DP,min-max容斥]

    传送门 前置知识 做这题前,您需要认识这个式子: \[ kthmax(S)=\sum_{\varnothing\neq T\subseteq S}{|T|-1\choose k-1} (-1)^{|T ...

  2. 【题解】洛谷P4707重返现世

    在跨年的晚上玩手机被妈妈骂了赶来写题……呜呜呜……但是A题了还是很开心啦,起码没有把去年的题目留到明年去做ヾ(◍°∇°◍)ノ゙也祝大家2019快乐! 这题显然的 kth min-max 容斥就不说了, ...

  3. P4707 重返现世 扩展 MinMax 容斥+DP

    题目传送门 https://www.luogu.org/problem/P4707 题解 很容易想到这是一个 MinMax 容斥的题目. 设每一个物品被收集的时间为 \(t_i\),那么集齐 \(k\ ...

  4. 洛谷 P4707 重返现世

    洛谷 P4707 重返现世 k-minimax容斥 有这一个式子:\(E(\max_k(S))=\sum_{T\subseteq S}(-1)^{|T|-k}C_{|T|-1}^{k-1}\min(T ...

  5. HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)

    题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...

  6. 洛谷P4707 重返现世(扩展MinMax容斥+dp)

    传送门 我永远讨厌\(dp.jpg\) 前置姿势 扩展\(Min-Max\)容斥 题解 看纳尔博客去→_→ 咱现在还没搞懂为啥初值要设为\(-1\)-- //minamoto #include< ...

  7. Luogu P4707 重返现世 (拓展Min-Max容斥、DP)

    题目链接 https://www.luogu.org/problem/P4707 题解 最近被神仙题八连爆了-- 首先Min-Max容斥肯定都能想到,问题是这题要用一个扩展版的--Kth Min-Ma ...

  8. 洛谷 P4707 - 重返现世(扩展 Min-Max 容斥+背包)

    题面传送门 首先看到这种求形如 \(E(\max(T))\) 的期望题,可以套路地想到 Min-Max 容斥 \(\max(S)=\sum\limits_{T\subseteq S}(-1)^{|T| ...

  9. Luogu P4707 重返现世

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

随机推荐

  1. 堆排序——Java实现

    一.堆排序 堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法.堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点. 二.堆 什 ...

  2. C#综合细说进程、应用程序域与上下文

    引言 本文主要是介绍进程(Process).应用程序域(AppDomain)..NET上下文(Context)的概念与操作. 虽然在一般的开发当中这三者并不常用,但熟悉三者的关系,深入了解其作用,对提 ...

  3. Linux 系统下10个查看网络与监听的命令

    下面列出来的10个基础的每个linux用户都应该知道的网络和监控命令.网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslook ...

  4. linux的一般命令------附加

    1.cat /etc/redhat-release             查看linux版本 2. ps -ef|grep ssh                        查看进程在不在 3. ...

  5. 微信小程序学习笔记四 页面的生命周期

    1. 生命周期 1.1 对应阶段说明 onLOad(Object query) 1.1 页面加载时触发, 一个页面只会调用一次, 可以在 onLoad的参数中获取打开当前页面路径中的参数 1.2 参数 ...

  6. C++字符串【string】和【char []】操作全攻略

    异想之旅:本人博客完全手敲,绝对非搬运,全网不可能有重复:本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告.本人所有文章发布平台为CSDN.博客园.简书和开源中国,后期可能会有个人博客,除此之外 ...

  7. Dynamics CRM实体系列之1:N、N:1以及N:N关系

    Dynamics CRM在实施过程中会遇到很多多个实体关联的问题,这样可以实现多个实体的记录通过关联的字段实现数据的综合展示,在Sql Server里面叫做外键,在Dynamics CRM叫做关系.D ...

  8. 从零开始实现简单 RPC 框架 6:网络通信之 Netty

    网络通信的开发,就涉及到一些开发框架:Java NIO.Netty.Mina 等等. 理论上来说,类似于序列化器,可以为其定义一套统一的接口,让不同类型的框架实现,事实上,Dubbo 就是这么干的. ...

  9. Zookeeper:进大厂不得不学的分布式协同利器!

    大家好,我是冰河~~ 最近,有很多小伙伴让我更新一些Zookeeper的文章,正好也趁着清明假期把之前自己工作过程当中总结的Zookeeper知识点梳理了一番,打算写一个[精通Zookeeper系列] ...

  10. Sonarqube C# 配置资料整理

    c#配置方式: http://www.cnblogs.com/CoderAyu/p/9416376.html http://www.cnblogs.com/jingridong/p/6513884.h ...