尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【题解】P4707 重返现世

【题解】P4707 重返现世
📅 发布时间:2026/6/22 1:58:50

min-max 容斥入门题。

考虑记物品的集合为 \(S\),每个物品的权值为第一次抓到该物品的时间,则集合中第一次得到一个物品的期望时间为 \(E(\min(S))\),那么我们最后所求的为 \(E(\operatorname{kthmin}(S))\)。

首先 \(E(\min(S))\) 是好求的,我们一次操作获得东西的概率为 \(\frac{\sum p_i}{m}\),那么期望时间就是 \(\frac{m}{\sum p_i}\)。

对于 \(E(\operatorname{kthmin}(S))\) 我们可以套路地进行 min-max 容斥,首先将 \(k\) 改成 \(n - k + 1 \leq 11\),则此时所求为 \(E(\operatorname{kthmax}(S))\)。

根据拓展 min-max 容斥的结论,我们有 \(E(\operatorname{kthmax}(S)) = \sum_{T \subseteq S}(-1)^{|T| - k}\binom{|T| - 1}{k - 1}E(\min(T))\)。

最终的贡献只和 \(\sum p_i\) 与 \(|T|\) 有关所以记 \(f_{i, j, k}\) 表示前 \(i\) 个物品选了 \(j\) 个 \(\sum p_i = k\),转移是简单的,但是难以通过。

考虑优化状态,把选 \(j\) 个塞到 DP 值中(\(k\) 显然难以优化)。设 \(f_{i, s}\) 为 \(\sum p_i = s\) 的系数和。

但是你会发现转移的时候需要用到不同的 \(k\) 的系数,所以对于每种 \(k\) 都记录一个系数,就可以转移了,有:

\[f_{i, s, k} \leftarrow f_{i - 1, s, k} + f_{i - 1, s - p_i, k - 1} - f_{i - 1, s - p_i, k} \]

上述的系数推法只需要将组合数拆开,是简单的。

考虑初值。

首先 \(f_{1, p_1, 1} = (-1)^0\binom{0}{0} = 1\),根据递推式 \(f_{1, p_1, 1} = f_{0, 0, 0} - f_{0, 0, 1}\)。并且 \(f_{1, p_1, k} = 0 = f_{0, 0, k - 1} - f_{0, 0, k}(k > 1)\)。

此时我们只需要构造 \(f_{0, 0, 0} = f_{0, 0, 1} + 1, f_{0, 0, i} = f_{0, 0, i + 1} (i > 0)\) 即可。

#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for (int i = (a); i <= (b); i ++)
#define fro(i, a, b) for (int i = (a); i >= b; i --)
#define INF 0x3f3f3f3f
#define eps 1e-6
#define lowbit(x) (x & (-x))
#define reg register
#define IL inline
typedef long long LL;
typedef std::pair<int, int> PII;
inline int read() {int x = 0, f = 1;char ch = getchar();while (ch < '0' || ch > '9') { if (ch == '-') f = -1; ch = getchar(); }while (ch >= '0' && ch <= '9') { x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar(); }return x * f;
}
// mt19937_64 sj(chrono::steady_clock::now().time_since_epoch().count());
// uniform_int_distribution<LL> u0(0, 1ll << 60);const int N = 10010, Mod = 998244353;
int n, K, m;
int p[N], f[2][N][12];int qmi(int a, int b = Mod - 2, int p = Mod) {int res = 1;while (b) {if (b & 1) res = 1ll * res * a % p;b >>= 1; a = 1ll * a * a % p;}return res;
}int main() {n = read(), K = read(), m = read();K = n - K + 1;for (int i = 1; i <= n; i ++) p[i] = read();f[0][0][0] = 0;  for (int i = 1; i <= K; i ++) f[0][0][i] = -1;for (int i = 1; i <= n; i ++) {int a = i & 1, b = a ^ 1;memset(f[a], 0, sizeof f[a]);for (int s = 0; s < p[i]; s ++) for (int k = 0; k <= K; k ++) f[a][s][k] = f[b][s][k];for (int s = p[i]; s <= m; s ++)for (int k = 1; k <= K; k ++) f[a][s][k] = ((f[b][s][k] + f[b][s - p[i]][k - 1] - f[b][s - p[i]][k]) % Mod + Mod) % Mod;}int ans = 0;for (int i = 1; i <= m; i ++) ans = (ans + 1ll * f[n & 1][i][K] * qmi(i) % Mod) % Mod;printf("%lld\n", 1ll * ans * m % Mod);return 0;
} 

相关新闻

  • 滞留卡常题
  • Cursor ai network issue workaround in Ubuntu 22.04
  • 2025 年漆渣脱水设备厂家最新推荐榜单:优质品牌厂家工艺系统装置全解析,助力企业高效环保处置漆渣脱水系统/漆渣脱水机/漆渣脱水装置厂家推荐

最新新闻

  • Claude Agents 记忆系统实战指南:Memory Store + Dreaming 完整教程
  • 2026在西安钻石回收行情回暖!闲置钻戒出手正当时 - 讯息早知道
  • Gemini不是聊天工具,而是谷歌AI操作系统级基础设施
  • 如何快速掌握小红书下载器:面向新手的完整批量下载无水印图文视频指南
  • 2026年临港精装房局部改造家具定制 松木纯原木榫卯工艺 - 企业名录优选推荐
  • 打破传统业态边界,冯启科创新中医生活化新消费商业模式 - 热点速览

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号