Tenzing and Random Operations CF1842G 题解
[1] 分析
设 \(m\) 次选的位置分别为 \(b_{1\sim m}\)。
于是答案为 \(\mathbb E(\prod\limits_{i = 1}^{n}(a_i + \sum\limits_{j = 1}^{m}[b_j \le i]\cdot v)) = \frac{S}{n^m}\)。
首先考虑期望很难做,希望将期望转化为概率形式,通过计算期望贡献之和来计算期望,发现因为这题贡献难以计算,这样还是有点困难。
再考虑因为所有方案等概率,将求期望转化为求所有情况下所期望答案的总和,最后除以总方案数即可,即求 \(S\)。
\(S = \sum\limits_{b}\prod\limits_{i = 1}^{n}(a_i + \sum\limits_{j = 1}^{m}[b_j \le i]\cdot v)\),发现最终的 \(a_i = a_i + v +\cdots\)。
因为答案最终是多个 \(n\) 个数相乘得到的数相加,于是答案可以 DP 求出。
具体而言,令 \(f_{i,j}\) 代表前 \(i\) 个数确定,有 \(j\) 个 \(b_p\) 已经确定。(注意,对 \(v\) 的个数并没有限制)。
对当前这一位分类讨论:
若这一位取 \(a_i\),则 \(f_{i - 1,j}\cdot a_i\to f_{i,j}\)。
若这一位取 \(v\)(已确定位置的 \(b\) 提供),则 \(f_{i - 1,j}\cdot v\cdot j\to f_{i,j}\)。
若这一位取 \(v\)(新确定一个 \(b\)),则 $f_{i - 1,j - 1}\cdot v\cdot (m - (j - 1))\cdot i\to f_{i,j} $。
那么初始有 \(f_{0,0} = 1\)。
最后统计答案 \(S = \sum\limits_{i=0}^{\min(n,m)} f_{n,i}\cdot n^{m-i}\)。
[2] 代码
int main() {
rd(n); rd(m); rd(v);
rep(i, 1, n) rd(a[i]);
int cur = 1;
int pre = 0;
f[0][0] = 1;
rep(i, 1, n) {
rep(j, 0, min(i, m)) {
f[cur][j] = 1LL * f[pre][j] * (a[i] + 1LL * v * j % mod) % mod;
if(j > 0) fadd(f[cur][j], 1LL * f[pre][j - 1] * v % mod * (m - (j - 1)) % mod * i % mod);
}
swap(cur, pre);
}
rep(i, 0, min(n, m)) {
fadd(S, f[pre][i] * fpow(n, m - i) % mod);
}
S = S * fpow(fpow(n, m), mod - 2) % mod;
pt("%d\n", S);
return 0;
}
[3] 经验
在遇到求期望的题目时,尝试将期望变为求概率或方案\(\cdot\)贡献。
Tenzing and Random Operations CF1842G 题解的更多相关文章
- Lintcode105 Copy List with Random Pointer solution 题解
[题目描述] A linked list is given such that each node contains an additional random pointer which could ...
- CF Gym 102028G Shortest Paths on Random Forests
CF Gym 102028G Shortest Paths on Random Forests 抄题解×1 蒯板子真jir舒服. 构造生成函数,\(F(n)\)表示\(n\)个点的森林数量(本题都用E ...
- NOI2014 随机数生成器
随机数生成器 [问题描述] 小H最近在研究随机算法.随机算法往往需要通过调用随机数生成函数(例如Pascal中的random和C/C++中的rand)来获得随机性.事实上,随机数生成函数也并不是真正的 ...
- Grinder搭建小记与Nduja(这次不待续了)
Grinder是比较有名的浏览器FUZZ框架,采用ruby语言编写,主要是作为测试框架来使用,在<白帽子讲浏览器安全>一书中作者使用了Nduja生成测试样本来配合Grinder使用.根据网 ...
- leveldb0
leveldb的源代码进行学习,则纯粹是出于一个码农对美好世界进行探究的好奇.接下来将尽可能从源代码上给出leveldb代码的详尽注释,这里先列出自己在阅读前后的主要参考. 0 官方文档http:// ...
- [LeetCode]题解(python):138-Copy List with Random Pointer
这道题目不是太懂,参考了http://www.cnblogs.com/zuoyuan/p/3745126.html的博客. 题意: A linked list is given such that e ...
- codechef Row and Column Operations 题解
版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...
- HDU 5938 Four Operations(乱搞)题解
题意:把'+', '-', '*' 和'/'按顺序插入任意两数字间隔,使得操作得到后计算后最大. 思路:没想到是个水题,打的时候想得太复杂了.这道题其实只要考虑*和/.显然我们要把a*b/c弄到最小. ...
- LeetCode题解之Copy List with Random Pointer
1.题目描述 2.问题分析 首先要完成一个普通的单链表的深度复制,然后将一个旧的单链表和新的单链表的节点使用map对应起来,最后,做一次遍历即可. 3.代码 RandomListNode *copyR ...
- HDU 6315 Naive Operations(线段树+区间维护)多校题解
题意:a数组初始全为0,b数组题目给你,有两种操作: 思路:dls的思路很妙啊,我们可以将a初始化为b,加一操作改为减一,然后我们维护一个最小值,一旦最小值为0,说明至少有一个ai > bi,那 ...
随机推荐
- Sql Server 按日统计产量
碰到一个这样的需求,需要查询每天的产量,直接 group 是可以分出不同天的产量,但是如果当天没有生产,就会少一条那一天的记录,而不是那一天显示产量为0,这样不方便前端显示曲线. 于是找到下面的办法, ...
- webpack4.15.1 学习笔记(十) — 常见 loader 使用
目录 style -loader <= css-loader <= less-loader postcss-loader file-loader url-loader html-withi ...
- oeasy教您玩转vim - 81 - # 宏macro的进阶
宏的进阶 macro 回忆 关于宏,上次有4个要点 qa 开始录制宏 q 结束录制宏 @a 应用宏 qA 追加录制宏 甚至可以编辑宏 "ap 把宏作为文本粘贴出来 编辑之后 " ...
- JavaScript 探究[] == ![]结果为true,而 {} == !{}却为false
console.log( [] == ![] ) // true console.log( {} == !{} ) // false 在比较字符串.数值和布尔值的相等性时,问题还比较简单.但在涉及到对 ...
- Segment-anything学习到微调系列_SAM初步了解
Segment-anything学习到微调系列_SAM初步了解 前言 本系列文章是博主在工作中使用SAM模型时的学习笔记,包含三部分: SAM初步理解,简单介绍模型框架,不涉及细节和代码 SAM细节理 ...
- ansible 部署hadoop
规划 ansible 节点 ansible controller 镜像rhel 8.2 镜像ansible hadoop 集群 master slave1 slave2 镜像centos 1810 0 ...
- python multipart/form-data post接口请求
python multipart/form-data post接口请求 def WebKit_format(data, boundary="----WebKitFormBoundary*** ...
- Jmeter函数助手16-StringFromFile
StringFromFile函数用于获取文本文件的值,一次读取一行,可读取多个文件. 输入文件的全路径:填入文件路径 存储结果的变量名(可选) Start file sequence number ( ...
- 【RabbitMQ】08 深入部分P1 可靠性投递
1.消息投递确认 这里的代码延用了06的东西: https://www.cnblogs.com/mindzone/p/15374684.html 删除之前的整合案例,重新写了一份案例的队列和交换机配置 ...
- 【DataBase】MySQL 09 SQL函数 单行函数其三 日期函数
日期函数 日期&时间函数 NOW 当前日期时间. CURDATE 当前日期. CURTIME 当前时间 -- NOW();返回系统日期+时间 SELECT NOW(); -- CURDATE( ...