传送门


题解:

首先令k=n−k+1k=n-k+1k=n−k+1,转化为求第kkk大。

直接利用Kth−MinMaxKth-MinMaxKth−MinMax容斥的式子我们知道要求这个东西:

E(kthmax⁡(S))=∑T⊆S(−1)∣T∣−k(∣T∣−1k−1)E(min⁡(T))E(kth\max(S))=\sum_{T \subseteq S}(-1)^{|T|-k}{|T|-1\choose k-1}E(\min(T))E(kthmax(S))=T⊆S∑​(−1)∣T∣−k(k−1∣T∣−1​)E(min(T))

无法直接O(2n)O(2^n)O(2n)计算,但是mmm很小,感觉可以搞点事情。

显然对于任意集合TTT,E(min⁡(T))=m∑pE(\min(T))=\frac{m}{\sum p}E(min(T))=∑pm​,所以我们考虑把m∑p\frac{m}{\sum p}∑pm​提出来,对于所有∑p\sum p∑p相同的情况,维护剩下部分的系数之和。

很显然转移是类似背包的,让我们看一下具体应该怎么弄。

设f[i][j]f[i][j]f[i][j],表示考虑了前iii个在与不在集合中的情况,所有∑p=j\sum p=j∑p=j的情况的(−1)∣T∣−k(∣T∣−1k−1)(-1)^{|T|-k}{|T|-1\choose k-1}(−1)∣T∣−k(k−1∣T∣−1​)之和。

不选iii的情况显然是原状态直接继承。

如果选择了iii,显然之前所有考虑了的集合的大小都要加111,但是我们在f[i][j]f[i][j]f[i][j]里面维护的所有集合的大小是不同的,并不好直接转移。

组合数学基础,(∣T∣k−1)=(∣T∣−1k−1)+(∣T∣−1k−2){|T|\choose k-1}={|T|-1\choose k-1}+{|T|-1\choose k-2}(k−1∣T∣​)=(k−1∣T∣−1​)+(k−2∣T∣−1​),发现kkk在变化。

我们发现转化后的kkk并不是很大,考虑对kkk维护一维。

设f[i][j][k]f[i][j][k]f[i][j][k]表示考虑前iii个,所有∑p=j\sum p=j∑p=j的集合的(−1)∣T∣−k(∣T∣−1k−1)(-1)^{|T|-k}{|T|-1\choose k-1}(−1)∣T∣−k(k−1∣T∣−1​)之和。

那么根据上面的组合数递推式,我们可以知道f[i−1][j−pi][k]f[i-1][j-p_i][k]f[i−1][j−pi​][k]中,∣T∣|T|∣T∣变大111,kkk不变,需要乘上−1-1−1,f[i−1][j−pi][k−1]f[i-1][j-p_i][k-1]f[i−1][j−pi​][k−1]中,∣T∣|T|∣T∣变大111,kkk变大111,系数直接转移。

把iii那一维压掉就行了。

下面代码里面把jjj和kkk的位置交换了一下,优化高维寻址。

我们算了所有∑p=j\sum p=j∑p=j的集合的系数,最后把贡献加上就行了。


代码:

#include<bits/stdc++.h>
#define ll long long
#define re register
#define cs constusing std::cerr;
using std::cout;cs int mod=998244353;
inline int add(int a,int b){return (a+=b)>=mod?a-mod:a;}
inline int dec(int a,int b){return (a-=b)<0?a+mod:a;}
inline int mul(int a,int b){ll r=(ll)a*b;return r>=mod?r%mod:r;}
inline void Inc(int &a,int b){(a+=b)>=mod&&(a-=mod);}
inline void Dec(int &a,int b){(a-=b)<0&&(a+=mod);}cs int N=1e3+7,M=1e4+7;int n,m,k;int f[12][M];
int inv[M];signed main(){#ifdef zxyoi
//  freopen("return.in","r",stdin);
#endifstd::cin>>n>>k>>m;k=n-k+1;inv[0]=inv[1]=1;for(int re i=2;i<=m;++i)inv[i]=mul(inv[mod%i],mod-mod/i);f[0][0]=1;for(int re i=1;i<=n;++i){int w;std::cin>>w;for(int re t=k;t;--t)for(int re j=m;j>=w;--j)Inc(f[t][j],dec(f[t-1][j-w],f[t][j-w]));}int ans=0;for(int re i=1;i<=m;++i)Inc(ans,mul(inv[i],f[k][i]));cout<<mul(ans,m)<<"\n";return 0;
}

【洛谷P4707】重返现世(Min-Max容斥)(背包)相关推荐

  1. 洛谷 P4707 重返现世

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

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

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

  3. [洛谷P4707] 重返现世

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

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

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

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

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

  6. [洛谷P4707]重返现世

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

  7. P3175 [HAOI2015]按位或(Min - Max容斥,FMT,概率期望,全网最清晰的题解!)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P3175 Prob ...

  8. 洛谷P3270:成绩比较(容斥、组合数学)

    解析 依然不会亚qwq 但这次至少有点上道了 (指推出了一个会导致重复计数的错误式子) 首先,我们要选出碾压那些人,方案数就是Cn−1kC_{n-1}^kCn−1k​ 然后,我们要统计每门学科的排名情 ...

  9. [luogu P4707] 重返现世

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

最新文章

  1. github上传本地代码失败
  2. symfony2 Process 组件的学习笔记
  3. 把eclipse从英文调整为中文
  4. java servlet 返回图片_SpringMVC返回图片的几种方式
  5. 无状态mysql_既然HTTP是无状态协议,mysql_close还有必要么?
  6. 多元回归和简单回归的区别_技术多元化的关键比您想象的要简单
  7. Linux 能否拿下苹果 M1 阵地?
  8. 53.NFS 服务器
  9. An Objective-C Error
  10. 省中心IEPGM同步到地市的IEPGM有问题,中心为“已商用”状态,地市为“已上架”状态
  11. brpc中的协程bthread源码剖析(一):Work Stealing以及任务的执行与切换
  12. 华为服务器上安装vm系统,云服务器安装vm教程
  13. Android 打造炫目的圆形菜单 秒秒钟高仿建行圆形菜单
  14. python编写赛车_90%的人说Python程序慢,5大神招让你的代码像赛车一样跑起来
  15. golang与手机如何实现一些自动化操作?
  16. python3安装psycopg2
  17. 敏捷开发中如何写好用户故事?
  18. MySQL远程连接提示Accesss denied for user 'root'@'此处为你自己的ip'(using password:YES)
  19. Ac-LVK-CHO,CAS号: 147600-40-6
  20. 在windows下制作mac os x的启动安装U盘

热门文章

  1. 鼎捷软件携手华为助力产业数智化,荣获两大“优秀伙伴”殊荣
  2. html 字体样式加粗,css字体怎么加粗?
  3. sqlite3交叉编译
  4. 3D点云基础知识(一)-初始入门-知乎整理(一)
  5. 看MapleSim符号如何一步解决并联机构逆运动学问题
  6. TFS2010删除团队项目
  7. ewb交通灯报告和文件_基于EWB的交通灯设计
  8. jdk安装jre报错
  9. 动易CMS - 设为首页代码和加入收藏代码(兼容各种浏览器)
  10. android热成像模块,Arduino制作简易热成像装置