P4707-重返现世【dp,数学期望,扩展min-max容斥】
正题
题目链接: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\)容斥的扩展了
\]
然后\(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\)的值,其实如果选的话转移就是
\]
这样我们的式子就是\(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容斥】的更多相关文章
- 洛谷P4707 重返现世 [DP,min-max容斥]
传送门 前置知识 做这题前,您需要认识这个式子: \[ kthmax(S)=\sum_{\varnothing\neq T\subseteq S}{|T|-1\choose k-1} (-1)^{|T ...
- 【题解】洛谷P4707重返现世
在跨年的晚上玩手机被妈妈骂了赶来写题……呜呜呜……但是A题了还是很开心啦,起码没有把去年的题目留到明年去做ヾ(◍°∇°◍)ノ゙也祝大家2019快乐! 这题显然的 kth min-max 容斥就不说了, ...
- P4707 重返现世 扩展 MinMax 容斥+DP
题目传送门 https://www.luogu.org/problem/P4707 题解 很容易想到这是一个 MinMax 容斥的题目. 设每一个物品被收集的时间为 \(t_i\),那么集齐 \(k\ ...
- 洛谷 P4707 重返现世
洛谷 P4707 重返现世 k-minimax容斥 有这一个式子:\(E(\max_k(S))=\sum_{T\subseteq S}(-1)^{|T|-k}C_{|T|-1}^{k-1}\min(T ...
- HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)
题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...
- 洛谷P4707 重返现世(扩展MinMax容斥+dp)
传送门 我永远讨厌\(dp.jpg\) 前置姿势 扩展\(Min-Max\)容斥 题解 看纳尔博客去→_→ 咱现在还没搞懂为啥初值要设为\(-1\)-- //minamoto #include< ...
- Luogu P4707 重返现世 (拓展Min-Max容斥、DP)
题目链接 https://www.luogu.org/problem/P4707 题解 最近被神仙题八连爆了-- 首先Min-Max容斥肯定都能想到,问题是这题要用一个扩展版的--Kth Min-Ma ...
- 洛谷 P4707 - 重返现世(扩展 Min-Max 容斥+背包)
题面传送门 首先看到这种求形如 \(E(\max(T))\) 的期望题,可以套路地想到 Min-Max 容斥 \(\max(S)=\sum\limits_{T\subseteq S}(-1)^{|T| ...
- Luogu P4707 重返现世
题目描述 为了打开返回现世的大门,Yopilla 需要制作开启大门的钥匙.Yopilla 所在的迷失大陆有 \(n\) 种原料,只需要集齐任意 \(k\) 种,就可以开始制作. Yopilla 来到了 ...
随机推荐
- AECC2018同时中英文切换多开使用,加倍提高你的工作效率
最近相信不少人已经更新了AECC2018,升级之后第一件重要的事当然是中英文的切换了,要不然工作中很麻烦.对于一直习惯用中文的人来说,在用模板过程中会出现各种表达式报错极其不方便,而对于习惯英文操作朋 ...
- 输入npm install 报错node-sass@4.13.0 postinstall:`node scripts/build.js` Failed at the node-sass@4.13.0
这个是因为sass安装时获取源的问题,先修改sass安装的源,再运行npm install就成功了 npm config set sass_binary_site=https://npm.taobao ...
- opencv入门系列教学(二)图像入门:读取、展示并保存视频
一.从相机读取视频 通常情况下,我们必须用摄像机捕捉实时画面.让我们从摄像头捕捉一段视频(我使用的是我笔记本电脑内置的网络摄像头) ,将其转换成灰度视频并显示出来. 要捕获视频,我们需要 ...
- 第一章 Net 5.0 快速开发框架 YC.Boilerplate--框架介绍
YC.Boilerplate 框架介绍 YC.Boilerplate 是一套快速开发框架,采用当下流行的前后端分离开发模式,前端 采用VUE.后端采用Net 5.0:框架实现了 多租户.动态webAp ...
- C# - 习题06_从键盘输入半径r,求出圆的面积
时间:2017-08-24 整理:byzqy 题目:编写一个程序,定义常量 Pi = 3.14159265 , 从键盘上输入半径 r ,求出圆的面积. 代码如下: 1 using System; 2 ...
- vue引用 element-ui 的 el-aside -> el-menu -> el-menu-item 路由侧边栏跳转链接,接上动态路由
npm 下载 npm i element-ui -S Vue main.js //引入element-ui的包 import ElementUI from 'element-ui'; //引入el ...
- 为什么Class实例可以不是全局唯一的——自定义类加载器
为什么Class实例可以不是全局唯一的 通过定义两个类加载器加载同一字节码文件来证明Class实例为什么不是全局唯一的 1.将一个名为Demo(没有后缀)的字节码文件放在D盘根目录 2.定义两个类加载 ...
- HTB Hack The Box -- Oopsiec
信息收集 开放了22ssh,80端口,其中ssh有弱口令爆破端口 先打开网页,然后进行目录爆破,在这期间先看一下网页的大概信息 没爆到什么有用的东西,但是有uploads文件夹说明是不是说明有文件上传 ...
- 20210716考试-NOIP16
考场时Prim的 $i$ 写成 $k$ 100->0 rank1->rank23 T1 Star Way To Heaven 考场正解:假设你要二分答案,则几个圆组成几道"屏障& ...
- Docker(24)- docker login 命令详解
如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 作用 登录 Docker 镜像仓 ...