题目链接:

【Luogu】重返现世

题目描述:

为了打开返回现世的大门,Yopilla 需要制作开启大门的钥匙。Yopilla 所在的迷失大陆有 $ n $ 种原料,只需要集齐任意 $ k $ 种,就可以开始制作。
Yopilla 来到了迷失大陆的核心地域。每个单位时间,这片地域就会随机生成一种原料。每种原料被生成的概率是不同的,第 $ i $ 种原料被生成的概率是 $ \frac{P_i}{m} $ 。如果 Yopilla 没有这种原料,那么就可以进行收集。
Yopilla 急于知道,他收集到任意 $ k $ 种原料的期望时间,答案对 $ 998244353 $ 取模。

做法:

根据 $ Kth-MinMax $ 容斥:
\[ Kth-MinMax(S) = \sum_{T \in S} C(|T| - 1, k - 1) (-1)^{|T| - k} min(T) \]
令 $ f[i][j][k] = (前i个元素中 \sum P_{a_i} = j)\sum_{T} C(|T| - 1, k - 1)(-1)^{|T| - k} $ 。考虑加入一个新元素:
不加:$ f[i][j][k] = f[i - 1][j][k] $ 。
加:
\[ f[i][j][k] = \sum_{T \in S} C(|T| - 1, k - 1) (-1)^{|T| - k}\\ = \sum_{T}C(|T|, k - 1)(-1)^{|T| - k + 1}\\ = \sum_{T}(C(|T| - 1, k - 1) + C(|T - 1|, k - 2))(-1)^{|T| - k + 1}\\ = \sum_{T}C(|T| - 1, k - 1)(-1)^{|T| - k}(-1) + \sum_{T}C(|T| - 1, k - 2)(-1)^{|T| - k + 1}\\ = -f[i - 1][j - P_i][k - 1] + f[i - 1][j - P_i][k] \]
$ f[i][0][0] = 1 $ 。
$ dp $ 转移即可(需要滚动数组),最后的 $ f[i][j][k] $ 期望为 $ \frac{m}{j} $ 。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 998244353;
const int N = 1010;
int n, m, k, p[N], ans = 0;
int fac[N], ifac[N];
int f[2][N * 10][N], Now = 0;inline int add(const int &x, const int &y) {return x + y < mod ? x + y : x + y - mod;
}
inline int sub(const int &x, const int &y) {return x - y < 0 ? x - y + mod : x - y;
}
inline int mul(const int &x, const int &y) {return (int)((ll)x * y % mod);
}
int ksm(int x, int y = mod - 2) {int ss = 1; for(; y; y >>= 1, x = mul(x, x)) if(y & 1) ss = mul(ss, x);return ss;
}
int C(int x, int y) {if(x < 0 || y < 0 || x < y) return 0;return mul(fac[x], mul(ifac[y], ifac[x - y]));
}
int main() {scanf("%d%d%d", &n, &k, &m), k = n - k + 1;for(int i = 1; i <= n; i++) scanf("%d", &p[i]);fac[0] = fac[1] = ifac[0] = ifac[1] = 1;for(int i = 2; i <= n; i++) fac[i] = mul(fac[i - 1], i);for(int i = 2; i <= n; i++) ifac[i] = mul(mod - mod / i, ifac[mod % i]);for(int i = 2; i <= n; i++) ifac[i] = mul(ifac[i - 1], ifac[i]);f[Now][0][0] = 1;for(int i = 1; i <= n; i++) {Now ^= 1;for(int j = 0; j <= m; j++)for(int h = 0; h <= k; h++) f[Now][j][h] = f[Now ^ 1][j][h];for(int j = p[i]; j <= m; j++)for(int h = 1; h <= k; h++) {f[Now][j][h] = add(f[Now][j][h], f[Now ^ 1][j - p[i]][h - 1]);f[Now][j][h] = sub(f[Now][j][h], f[Now ^ 1][j - p[i]][h]);}}for(int i = 1; i <= m; i++) ans = add(ans, mul(f[Now][i][k], ksm(i)));printf("%d\n", mul(ans, m));return 0;
}

转载于:https://www.cnblogs.com/daniel14311531/p/11137051.html

【Luogu】重返现世相关推荐

  1. [LGP4707] 重返现世

    世界是物质的,物质是运动的,运动是有规律的,规律是可以被认识的. 关于期望意义下min-max容斥,我们认为每个事件的时间来认识事件,max/min S表示集合S中所有时间最后/最前出现的事件,E(m ...

  2. 【题解】P4707 重返现世

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

  3. 洛谷 P4707 重返现世

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

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

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

  5. [luogu P4707] 重返现世

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

  6. Luogu P4707 重返现世

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

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

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

  8. [洛谷P4707] 重返现世

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

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

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

  10. 洛谷 P4707 【重返现世】

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

最新文章

  1. iOS解决键盘阻挡输入框
  2. 中国新十大军工企业名单及简称
  3. 驱动进化之路:总线设备驱动模型
  4. HashedWheelTimer时间轮定时任务原理分析
  5. Spring-Cloud 学习笔记-(4)负载均衡器Ribbon
  6. 到底什么是“机器学习”?机器学习有哪些基本概念?(简单易懂)
  7. 计算机英语讲课笔记07
  8. 【GNN】一文读懂图卷积GCN
  9. matlab 亚像素边缘检测,一种亚像素边缘检测方法与流程
  10. 网络学习 2g 3g 4g 5g技术对比
  11. 关于ubuntu 系统chromium浏览器启用AdobeFlashPlayer
  12. C++下的utility
  13. uc7.5java下载,uc浏览器7.5版手机下载-uc浏览器7.5官方版v7.5 安卓版 - 极光下载站...
  14. 清华大学转到计算机专业一年几个,计算机专业(转).doc
  15. 爬虫到底违法吗?这位爬虫工程师给出了答案
  16. 小程序创业会有哪些坑
  17. iOS 视频直播技术
  18. 发表论文被拒?只因你没注意这几点
  19. 《高校bbs或者科研论坛》
  20. 离散数学:聚会上的名人

热门文章

  1. python输入输出格式_Python基础-用户的输入及格式化输出 | 【韩涛博客】
  2. 水电缴费系统php源码_php简易扫码付教育收费系统 v1.2
  3. 拓扑排序:LC 207. 课程表 210. 课程表 II
  4. PAT之算法/技巧:01背包
  5. 多边形面积的求法(已知每个点的坐标)hdu2036
  6. idea中pom中有些配置为什么不提示_Delegate IDE build/run actions to maven 配置的影响
  7. 【2019南昌邀请赛网络赛I:】Max Answer(st表+单调栈(新模版)+分析)
  8. 迁安职中计算机专业,迁安职业技术教育中心2021年招生简章
  9. matlab 结构体遍历,matlab 遍历结构体struc的成员
  10. 手机安装python模块吗_1-Python-非root用户安装Python及Python模块