ABC270Ex
给定 \(0=a_1\leq a_2\leq \cdots \leq a_n\leq 10^{18}\),\(a_n>0\)。初始有 \(n\) 个均为 \(0\) 的计数器 \(c_{1\cdots n}\),每次操作均匀随机一个 \(1\leq i\leq n\),然后令 \(c_i=0\),并把其它 \(c\) 都加一。不断执行操作直到对于每个 \(i\) 都满足 \(c_i\ge a_i\),求期望操作次数,\(\bmod 998244353\)。
\(2\leq n\leq 2\times 10^5\)。
终止条件显然等价于对于每个 \(i\),距离上一次操作 \(i\) 已经再进行了至少 \(a_i\) 次操作。于是可以转化为有一个变量 \(x\),意义为当前最大的 \(a_i-c_i\),初始值为 \(a_n\),则操作等价于每次随机一个 \(i\),令 \(x\gets \max\{x-1,a_i\}\),直到 \(x=0\)。
暴力地,记 \(f_i\) 表示 \(x\) 从 \(i\) 到 \(i-1\) 的期望操作次数,则 \(f_i=1+\frac{1}{n}(\sum_{a_k\ge i} f_{i\sim a_k})\),额外统计 \(a_k=i\) 的个数并移项除回去即可。
发现 \(i\in(a_{k-1},a_{k}]\) 里的转移是类似的,另设 \(F_k\) 表示 \(x\) 从 \(a_k\) 到 \(a_{k-1}\) 的期望操作次数,转移仍然先考虑一格一格地进行:\(x\in(a_{k-1},a_{k}]\),假设 \(a_{j\sim i}\) 的值都相等,一起转移它们的 \(F_k\),令 \(f_i\) 为初始为 \(a_k\),到达 \(i\) 的期望操作次数,则:
默认转移这一段时 \(f_{a_k+1}=0\),转移完成后更新 \(F\)。
\(f\) 的单步转移容易写成 \(X\gets A\times X+B\) 的形式,找到通项之后快速幂,类似同一场的 G。
\(O(n\log V)\)。
原文地址:https://www.cnblogs.com/moyujiang/p/16743105.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux平台安装redis及redis扩展的方法
- Linux环境下快速搭建ftp服务器方法介绍
- Linux通过匿名管道进行进程间通信
- shell判断一个变量是否为空方法总结
- 基于ubuntu16 Python3 tensorflow(TensorFlow环境搭建)
- Linux中的iostat命令使用教程
- 深入解读Linux进程函数fork(),vfork(),execX()
- Linux centos下设置定时备份任务的方法步骤
- Linux 中如何切换相同程序的不同版本
- Linux中查看指定文件夹内各个子文件夹内的文件数量
- Linux系统中 /etc/fstab 文件的深入解读
- bash命令使用详解
- 实例详解Linux 中的命令链接操作符
- Python 为什么不支持 switch 语句?
- centos安装jdk1.8时出现没有/lib/ld-linux.so.2:这个文件的原因分析