luoguP4707 重返现世
收集邮票加强版,每个邮票不是等概率获得的了。
而且是获得K个,如果把一个全集S集合找出其获得时间集合(显然获得时间两两不同)的话,那么就是第n-k+1大的期望!
min-max容斥扩展:
推广到期望:
只要求后面的东西
对于集合T,设∑t∈T=SUM,那么,E(min(T))=m/SUM
所以,只要知道SUM,就可以计算贡献
所以,不妨把SUM放进状态里,记录贡献次数(就是-1和组合数那坨)
k=n-k+1之后也很小
f[p][i][j],当k=p时候,前i个,SUM=j的所有集合的贡献
i不加入:<-f[p][i-1][j]
i加入,[i-1][j]转移。p?之前的所有的这样的集合大小都+1了
就是考虑用组合数来巧妙推出|T|->|T|+1
然后就可以递推了!
初值:f[0][0][0]=0,f[k][0][0]=-1,或者手动把i=1的情况做出来也可以
滚动数组
#include<bits/stdc++.h>
#define reg register int
#define il inline
#define fi first
#define se second
#define mk(a,b) make_pair(a,b)
#define numb (ch^'0')
using namespace std;
typedef long long ll;
template<class T>il void rd(T &x){
char ch;x=;bool fl=false;
while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true);
for(x=numb;isdigit(ch=getchar());x=x*+numb);
(fl==true)&&(x=-x);
}
template<class T>il void output(T x){if(x/)output(x/);putchar(x%+'');}
template<class T>il void ot(T x){if(x<) putchar('-'),x=-x;output(x);putchar(' ');}
template<class T>il void prt(T a[],int st,int nd){for(reg i=st;i<=nd;++i) ot(a[i]);putchar('\n');} namespace Miracle{
const int N=;
const int M=+;
const int K=;
const int mod=;
int n,k,m;
int p[N];
int f[][K][M];
int inv[M];
int ad(int x,int y){
return x+y>=mod?x+y-mod:x+y;
}
int main(){
rd(n);rd(k);rd(m);
for(reg i=;i<=n;++i) rd(p[i]);
k=n-k+;
inv[]=;
for(reg i=;i<=m;++i) {
inv[i]=(ll)(mod-mod/i)*inv[mod%i]%mod;
}
int tmp=;
for(reg t=;t<=k;++t) f[tmp][t][]=-;
for(reg i=;i<=n;++i){
tmp^=;
memset(f[tmp],,sizeof f[tmp]);
for(reg t=;t<=k;++t){
for(reg j=;j<=m;++j){
f[tmp][t][j]=f[tmp^][t][j];
if(j>=p[i]){
f[tmp][t][j]=ad(f[tmp][t][j],ad(f[tmp^][t-][j-p[i]],mod-f[tmp^][t][j-p[i]]));
}
}
}
}
ll ans=;
for(reg j=;j<=m;++j){
ans=ad(ans,(ll)f[tmp][k][j]*m%mod*inv[j]%mod);
}
cout<<ans;
return ;
} }
signed main(){
Miracle::main();
return ;
} /*
Author: *Miracle*
*/
luoguP4707 重返现世的更多相关文章
- 【Luogu4707】重返现世(min-max容斥)
[Luogu4707]重返现世(min-max容斥) 题面 洛谷 求全集的\(k-max\)的期望 题解 \(min-max\)容斥的证明不难,只需要把所有元素排序之后考虑组合数的贡献,容斥系数先设出 ...
- 洛谷 P4707 重返现世
洛谷 P4707 重返现世 k-minimax容斥 有这一个式子:\(E(\max_k(S))=\sum_{T\subseteq S}(-1)^{|T|-k}C_{|T|-1}^{k-1}\min(T ...
- [LGP4707] 重返现世
世界是物质的,物质是运动的,运动是有规律的,规律是可以被认识的. 关于期望意义下min-max容斥,我们认为每个事件的时间来认识事件,max/min S表示集合S中所有时间最后/最前出现的事件,E(m ...
- Luogu P4707 重返现世
题目描述 为了打开返回现世的大门,Yopilla 需要制作开启大门的钥匙.Yopilla 所在的迷失大陆有 \(n\) 种原料,只需要集齐任意 \(k\) 种,就可以开始制作. Yopilla 来到了 ...
- [洛谷P4707] 重返现世
Description 为了打开返回现世的大门,\(Yopilla\) 需要制作开启大门的钥匙.\(Yopilla\) 所在的迷失大陆有 \(n\) 种原料,只需要集齐任意 \(k\) 种,就可以开始 ...
- 洛谷P4707 重返现世 [DP,min-max容斥]
传送门 前置知识 做这题前,您需要认识这个式子: \[ kthmax(S)=\sum_{\varnothing\neq T\subseteq S}{|T|-1\choose k-1} (-1)^{|T ...
- 洛谷 P4707 【重返现世】
题目分析 题目就是求第K种原料的出现期望时间. 考虑广义min-max容斥. \(\text{kthmax}(S)=\sum\limits_{T\subseteq S}(-1)^{|T|-k}\bin ...
- 【题解】洛谷P4707重返现世
在跨年的晚上玩手机被妈妈骂了赶来写题……呜呜呜……但是A题了还是很开心啦,起码没有把去年的题目留到明年去做ヾ(◍°∇°◍)ノ゙也祝大家2019快乐! 这题显然的 kth min-max 容斥就不说了, ...
- 洛谷P4707 重返现世(扩展MinMax容斥+dp)
传送门 我永远讨厌\(dp.jpg\) 前置姿势 扩展\(Min-Max\)容斥 题解 看纳尔博客去→_→ 咱现在还没搞懂为啥初值要设为\(-1\)-- //minamoto #include< ...
随机推荐
- Day 4-3 os & sys模块
常用方法: import os os.getcwd() # 获取当前程序的工作路径(python解释器的运行路径,不是脚本所在的路径.) os.listdir() # 获取当前程序根目录下的所有文件夹 ...
- javascript中 json数据的解析与序列化
首先明确一下概念: json格式数据本质上就是字符串: js对象:JavaScript 中的几乎所有事务都是对象:字符串.数字.数组.日期.函数,等等. json数据的解析: 就是把后端传来的json ...
- SpringBoot之修改单个文件后立刻生效
问题: 在使用SpringBoot进行开发时,如果修改了某个文件比如前端页面html,不能立刻起效. 解决: 在idea中打开修改后的文件,使用快捷键Ctrl+Shift+F9 进行重新编译,然后刷新 ...
- C# 获取文件详细备注信息 (如图片、视频实际创建时间)
在整理照片/视频时想根据实际拍摄时间重命名文件,但 System.IO.FileInfo 只能获取到文件的创建时间或最后写入时间,不符合要求,遂寻找解决方案 方案 1: System.Drawing ...
- 【python练习题】程序2
2.题目:企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%:20万到40 ...
- ie11的版本判断
我的电脑昨天更新的时候把ie11给更新出来了,然后发现我的skylineweb项目提示我的浏览器不是ie,这样显然是浏览器检测出现了问题.查找后找到了下面的解决方法.大家的电脑如果也更新成了ie11的 ...
- 删除本地git的远程分支和远程删除git服务器的分支【转】
转- 删除本地git的远程分支和远程删除git服务器的分支 在项目中使用git管理代码后,有些时候会创建很多不同名称的分支,以此区分各个分支代码功能. 而随着代码的合并,以前的分支就可能不再需要保存了 ...
- sed 收集
#删除倒数第二行的最后的逗号 一条命令 sed ':1;$b;N;/InnoDB/!b1;s/,\n)/\n)/'
- python成长之路二
python的print格式化输出,以及使用format来控制. 1,打印字符串(str),利用%s. >>> print ('My name is %s' % ('TaoXiao' ...
- 【XSY2731】Div 数论 杜教筛 莫比乌斯反演
题目大意 定义复数\(a+bi\)为整数\(k\)的约数,当且仅当\(a\)和\(b\)为整数且存在整数\(c\)和\(d\)满足\((a+bi)(c+di)=k\). 定义复数\(a+bi\)的实部 ...