洛谷 P4707 重返现世
洛谷 P4707 重返现世
k-minimax容斥
有这一个式子:\(E(\max_k(S))=\sum_{T\subseteq S}(-1)^{|T|-k}C_{|T|-1}^{k-1}\min(T)\)
dp。考虑怎么设状态,因为\(\min(T)=\frac{m}{\sum_{i\in T}i}\),所以要设一维表示和;还要加一维表示当前的\(k\)。
设\(f_{i,k,j}\)表示\(S\)中加入了前\(i\)个元素,式子中的\(\sum_{T\subseteq S}(-1)^{|T|-k}C_{|T|-1}^{k-1}\)值。
考虑转移,进来一个数\(x\)可以选择加进\(T\)或不加。不加显然直接转移,\(f_{i+1,k,j}+=f_{i,k,j}\)。
如果加这个数,\(|T|\)要变成\(|T|+1\),改写式子:
\(\sum_{T\subseteq S}(-1)^{|T|+1-k}C_{|T|}^{k-1}\)
\(\sum_{T\subseteq S}(-1)^{|T|+1-k}(C_{|T|-1}^{k-1}+C_{|T|-1}^{k-2})\)
\(\sum_{T\subseteq S}(-(-1)^{|T|-k}C_{|T|-1}^{k-1}+(-1)^{|T|-k-1}C_{|T|-1}^{k-2})\)
那么转移是\(f_{i+1,k,j}+=-f_{i,k,j-p_i}+f_{i,k-1,j-p_i}\)。
边界情况是\(f_{i,0,0}=1\)。
#include<bits/stdc++.h>
#define il inline
#define vd void
#define mod 998244353
typedef long long ll;
il ll gi(){ll x=0,f=1;char ch=getchar();while(!isdigit(ch))f^=ch=='-',ch=getchar();while(isdigit(ch))x=x*10+ch-'0',ch=getchar();return f?x:-x;
}
int p[1010],f[11][10010];
il vd inc(int&a,int b){a=a+b>=mod?a+b-mod:a+b;}
il int sub(int a,int b){return a<b?a-b+mod:a-b;}
il int pow(int x,int y){int ret=1;while(y){if(y&1)ret=1ll*ret*x%mod;x=1ll*x*x%mod;y>>=1;}return ret;
}
int main(){
#ifdef XZZSBfreopen("in.in","r",stdin);freopen("out.out","w",stdout);
#endifint n=gi(),k=n+1-gi(),m=gi();for(int i=1;i<=n;++i)p[i]=gi();f[0][0]=1;for(int i=1;i<=n;++i)for(int j=k;j;--j)for(int l=m;l>=p[i];--l)inc(f[j][l],sub(f[j-1][l-p[i]],f[j][l-p[i]]));int ans=0;for(int i=1;i<=m;++i)inc(ans,1ll*f[k][i]*pow(i,mod-2)%mod);printf("%d\n",1ll*ans*m%mod);return 0;
}
转载于:https://www.cnblogs.com/xzz_233/p/11049274.html
洛谷 P4707 重返现世相关推荐
- [洛谷P4707] 重返现世
Description 为了打开返回现世的大门,\(Yopilla\) 需要制作开启大门的钥匙.\(Yopilla\) 所在的迷失大陆有 \(n\) 种原料,只需要集齐任意 \(k\) 种,就可以开始 ...
- [洛谷P4707]重返现世
Description 有n种物品,每次操作你有pimpi\over mmpi的概率获得第i种物品 求你获得k种物品的期望操作数. n<=1000,n-k<=10,m<=10000 ...
- 洛谷P4707 重返现世(扩展MinMax容斥+dp)
传送门 我永远讨厌\(dp.jpg\) 前置姿势 扩展\(Min-Max\)容斥 题解 看纳尔博客去→_→ 咱现在还没搞懂为啥初值要设为\(-1\)-- //minamoto #include< ...
- 【题解】P4707 重返现世
[题解]P4707 重返现世 P4707 重返现世 期望下Min-Max容斥DP E(kthmax(T))=∑T⊂S(−1)∣T∣−kC∣T∣−1k−1E(min(S))E(kthmax(T)) = ...
- [luogu P4707] 重返现世
Description 洛谷题目链接:https://www.luogu.org/problemnew/show/P4707 Solution 前置广义\(\min-\max\)容斥,不懂的可以看看我 ...
- 【洛谷P4707】重返现世【扩展Min-Max容斥】【dp】
传送门 题意:NNN种物品,每次第iii种产生概率为piM\frac{p_i}{M}Mpi,∑pi=M\sum p_i=M∑pi=M.求生成KKK种不同物品的期望时间 模998244353998 ...
- 洛谷 P4707 【重返现世】
题目分析 题目就是求第K种原料的出现期望时间. 考虑广义min-max容斥. \(\text{kthmax}(S)=\sum\limits_{T\subseteq S}(-1)^{|T|-k}\bin ...
- 【洛谷P4707】重返现世(Min-Max容斥)(背包)
传送门 题解: 首先令k=n−k+1k=n-k+1k=n−k+1,转化为求第kkk大. 直接利用Kth−MinMaxKth-MinMaxKth−MinMax容斥的式子我们知道要求这个东西: E(kth ...
- Luogu P4707 重返现世 (拓展Min-Max容斥、DP)
题目链接 https://www.luogu.org/problem/P4707 题解 最近被神仙题八连爆了-- 首先Min-Max容斥肯定都能想到,问题是这题要用一个扩展版的--Kth Min-Ma ...
最新文章
- smarty调试方法
- IOS之代理文字点击变大变小
- python函数的作用域_python函数的作用域和引用范围
- Bootstrap 弹出提示插件popover 的使用方法
- 【英语学习】【English L06】U06 Banking L5 I'd like to change Chinese *yuan* into pounds
- linux操作系统巡检报告,linux服务器巡检报告
- Linux中rz和sz命令用法详解
- sublime html主题,2015 和 2016 最好 Sublime Text 3 主题
- java程序的执行流程
- MATLAB实现智能计算方法实验:实验三 BP神经网络
- Python 生成图片验证码(详解)
- 蓝牙BLE5.0扩展广播介绍
- Linux下poky编译1
- MATLAB航空发动机装配,航空发动机在MATLAB与C++接口支持下的建模方法
- 楼天城男人八题之博弈
- rest风格使用两个变量_REST风格
- BEPs协议:BUMO STO 10 协议
- 不会盗QQ,还当什么程序员?
- 解决Mac安装Photoshop系列软件报错代码501的错误案例分享适用于AI/PS/AU/PR等
- 3U 轨道交通车载工业级M12 PoE交换机,防护等级IP66