IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【luogu CF1153F】Serval and Bonus Problem(期望)(DP) -> 正文阅读

[数据结构与算法]【luogu CF1153F】Serval and Bonus Problem(期望)(DP)

Serval and Bonus Problem

题目链接:luogu CF1153F

题目大意

长度为 l 的线段,有 n 个区间端点随机分布,然后问你期望有多少长度被至少 k 个区间覆盖。

思路

首先这种随机分布的期望题考虑也把随机的时间弄成一个平均分布。
在这里就是我们可以理解为这 2 n 2n 2n 个端点是均匀分布在 l l l 上的,那每段长度就是 l 2 n + 1 \dfrac{l}{2n+1} 2n+1l?

然后我们就可以考虑 DP,设 f i , j f_{i,j} fi,j? i i i 个端点,当前有 j j j 个左端点没有匹配。
那没有匹配说明要延伸过去,那只要延伸过去的数量大于等于 k k k,就说明这个段是贡献的。

然后我们考虑每个位置放左端点还是右端点,注意如果是右端点你会选跟哪个左端点,所以要乘上 j j j

然后你考虑怎么计算答案,你前面保证了这个左端点,那右端点你也应该要保证吧。
那左右端点其实是一样的,所以你可以直接用 DP 的值,就是两个乘起来,然后左右端点匹配是一个阶乘。

然后你前面算的是方案你要除总方案才是概率,然后总方案是 f 2 n , 0 f_{2n,0} f2n,0?

然后就可以啦。

代码

#include<cstdio>
#define ll long long
#define mo 998244353

using namespace std;

const int N = 2005;
int n, k, l;
ll f[N << 1][N], jc[N];

ll ksm(ll x, ll y) {
	ll re = 1;
	while (y) {
		if (y & 1) re = re * x % mo;
		x = x * x % mo; y >>= 1;
	}
	return re; 
}

ll clac(int n, int k) {
	f[0][0] = 1; ll ans = 0;
	for (int i = 0; i < 2 * n; i++) {
		for (int j = 0; j <= i && j <= n; j++) {
			(f[i + 1][j + 1] += f[i][j]) %= mo;
			if (j) (f[i + 1][j - 1] += f[i][j] * j % mo) %= mo;
		}
	}
	for (int i = 1; i <= 2 * n; i++)
		for (int j = k; j <= n; j++)
			(ans += f[i][j] * f[2 * n - i][j] % mo * jc[j]) %= mo;
	return ans * ksm(f[2 * n][0], mo - 2) % mo;
}

int main() {
	scanf("%d %d %d", &n, &k, &l); l = l * ksm(2 * n + 1, mo - 2) % mo;
	jc[0] = 1; for (int i = 1; i <= n; i++) jc[i] = jc[i - 1] * i % mo;
	printf("%lld", clac(n, k) * l % mo);
	
	return 0;
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:44:27  更:2022-05-05 11:46:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:41:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码