洛谷 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 重返现世相关推荐

  1. [洛谷P4707] 重返现世

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

  2. [洛谷P4707]重返现世

    Description 有n种物品,每次操作你有pimpi\over mmpi​的概率获得第i种物品 求你获得k种物品的期望操作数. n<=1000,n-k<=10,m<=10000 ...

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

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

  4. 【题解】P4707 重返现世

    [题解]P4707 重返现世 P4707 重返现世 期望下Min-Max容斥DP E(kthmax(T))=∑T⊂S(−1)∣T∣−kC∣T∣−1k−1E(min⁡(S))E(kthmax(T)) = ...

  5. [luogu P4707] 重返现世

    Description 洛谷题目链接:https://www.luogu.org/problemnew/show/P4707 Solution 前置广义\(\min-\max\)容斥,不懂的可以看看我 ...

  6. 【洛谷P4707】重返现世【扩展Min-Max容斥】【dp】

    传送门 题意:NNN种物品,每次第iii种产生概率为piM\frac{p_i}{M}Mpi​​,∑pi=M\sum p_i=M∑pi​=M.求生成KKK种不同物品的期望时间 模998244353998 ...

  7. 洛谷 P4707 【重返现世】

    题目分析 题目就是求第K种原料的出现期望时间. 考虑广义min-max容斥. \(\text{kthmax}(S)=\sum\limits_{T\subseteq S}(-1)^{|T|-k}\bin ...

  8. 【洛谷P4707】重返现世(Min-Max容斥)(背包)

    传送门 题解: 首先令k=n−k+1k=n-k+1k=n−k+1,转化为求第kkk大. 直接利用Kth−MinMaxKth-MinMaxKth−MinMax容斥的式子我们知道要求这个东西: E(kth ...

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

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

最新文章

  1. smarty调试方法
  2. IOS之代理文字点击变大变小
  3. python函数的作用域_python函数的作用域和引用范围
  4. Bootstrap 弹出提示插件popover 的使用方法
  5. 【英语学习】【English L06】U06 Banking L5 I'd like to change Chinese *yuan* into pounds
  6. linux操作系统巡检报告,linux服务器巡检报告
  7. Linux中rz和sz命令用法详解
  8. sublime html主题,2015 和 2016 最好 Sublime Text 3 主题
  9. java程序的执行流程
  10. MATLAB实现智能计算方法实验:实验三 BP神经网络
  11. Python 生成图片验证码(详解)
  12. 蓝牙BLE5.0扩展广播介绍
  13. Linux下poky编译1
  14. MATLAB航空发动机装配,航空发动机在MATLAB与C++接口支持下的建模方法
  15. 楼天城男人八题之博弈
  16. rest风格使用两个变量_REST风格
  17. BEPs协议:BUMO STO 10 协议
  18. 不会盗QQ,还当什么程序员?
  19. 解决Mac安装Photoshop系列软件报错代码501的错误案例分享适用于AI/PS/AU/PR等
  20. 3U 轨道交通车载工业级M12 PoE交换机,防护等级IP66

热门文章

  1. MOS管的介绍与简单应用
  2. narrowing conversion of 'XXX' from 'int' to 'char' inside{}
  3. MATLAB基础—数据类型
  4. NLP点滴——文本相似度
  5. 规模较大的四大计算机互联网络,我国的四大互联网络是什么?
  6. 读书百客:《临江仙引·上国》赏析
  7. 龙芯2F内核损坏解决办法
  8. C++练手小项目:职工工资信息管理系统
  9. 如何把xml格式数据转成json格式?
  10. MapGis 二次开发 注册DLL失败问题