2025.03.13 CW 模拟赛 B. 命运的X

news/2025/3/14 10:07:39/文章来源:https://www.cnblogs.com/Steven1013/p/18771561

B. 命运的X

思路

最近概率期望的题做的比较多 \((\)虽然还是不咋会\()\), 不难列出一个十分显然的转移式子: \(f_i\) 表示目前已经匹配到第 \(i\) 个数, 匹配到第 \(n\) 个数的期望. 有转移式子

\[f_i = \frac{1}{m}f_{i + 1} + \frac{t}{m} \sum_{j = 1}^t f_{x_j} + \frac{m - t - 1}{m}f_0 + 1 \]

正常来说套一下高斯消元模板就可, 但是这道题要取模, 而且数据范围 \(n \le 2 \times 10^5\).

正难则反, 我们换一种定义. 令 \(f_i\) 表示我们目前已经将 \(1 \sim i - 1\) 匹配完成的期望. 转移有

\[f_i = 1 + \sum_{j = 1}^t \frac{1}{m} (\sum_{k = x_j + 1}^{i - 1} f_k) + \frac{m - t - 1}{m}\sum_{j - 1}^{i - 1} f_j \]

其中 \(x_j\) 表示当前的 \(\rm{border}\). 可以事先对 \(B\) 跑一遍 \(\rm{kmp}\), 转移使用前缀和优化, 时间复杂度 \(\mathcal{O}(n^2)\).

接下来考虑正解.

还是求出 \(B\) 数组的 \(\rm{kmp}\) 数组, 接下来我们维护一个人的集合

  • 加入一个人, 他有 1 元钱.
  • 若某个人有 \(m^i\) 元钱, 则他将用全部的钱赌下一个数是 \(b_{i + 1}\). 如果赌输了, 退出集合; 如果对了, 将钱数 \(\times m\), 变成 \(m^{i + 1}\).

可以发现每个人都有 \(\frac{1}{m}\) 的概率赌对, \(\frac{m - 1}m\) 的概率输光, 所以每个人期望有 1 元钱.

同时所有人总钱数的期望, 就是当前 \(A\) 数组的长度.

考虑终止条件: 当一个人拥有 \(m^n\) 元时, \(B\) 序列被赌出来了, 就可以停止了, 这时所有人的总钱数就是 \(\displaystyle m^n + \sum_{p \in \mathbb{P}} m^p\), 其中 \(\mathbb{P}\) 就是 \(B\)\(\rm{border}\) 集合.

证明一下, 我们假设当前有个人一直赌的是对的, 每个人入场时赌的是一段前缀, 同时这也是一段后缀, 如果有一个人赌错了, 那么他就退出, 同时 \(A\) 序列长度也会加上他所赌的长度, 也就是 \(\rm{border}\) 长度. 换句话说, 每个 \(\rm{border}\) 的长度贡献是独立的, 不会多次计算.

#include <iostream>
#include <vector>
#include <string>
#include <unordered_set>using namespace std;constexpr int MOD = 998244353;int main() {cin.tie(nullptr)->sync_with_stdio(false);int T;cin >> T;while (T--) {int m, n;cin >> m >> n;vector<int> vec(n);for (int& x : vec) cin >> x;// 预处理m的幂次vector<long long> pow_m(n + 1);pow_m[0] = 1;for (int i = 1; i <= n; ++i) {pow_m[i] = (pow_m[i - 1] * m) % MOD;}// 构建前缀函数vector<int> pi(n, 0);for (int i = 1; i < n; ++i) {int j = pi[i - 1];while (j > 0 && vec[i] != vec[j]) {j = pi[j - 1];}if (vec[i] == vec[j]) {++j;}pi[i] = j;}// 收集所有border长度unordered_set<int> borders;int k = n > 0 ? pi[n - 1] : 0;while (k > 0) {borders.insert(k);k = pi[k - 1];}// 计算结果long long ans = pow_m[n];for (int p : borders) {ans = (ans + pow_m[p]) % MOD;}cout << ans << endl;}return 0;
}

结语

其实我也不是很清楚. 等以后再复习.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/898533.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PTFE大型反应容器-聚四氟乙烯圆桶

聚四氟乙烯圆桶具有以下特点: 一、材料特性耐腐蚀性:能够抵抗绝大多数化学物质的侵蚀,包括强酸、强碱、有机溶剂等。耐高温性:长期使用温度可达 -196℃至 260℃。低摩擦系数:表面光滑,摩擦系数极小,有利于物料的流动和排放。不粘性:几乎所有物质都不与聚四氟乙烯粘连,…

NET 模拟编辑平滑曲线

本文介绍不依赖贝塞尔曲线,如何绘制一条平滑曲线,用于解决无贝塞尔控制点的情况下绘制曲线、但数据点不在贝塞尔曲线的场景。 在上一家公司我做过一个平滑曲线编辑工具,用于轮椅调整加减速曲线。基于几个用户可控制的点,生成一条平滑的曲线,控制点需要保持在曲线上。 今天…

PFA药铲一体成型氟树脂铲子

PFA药铲一体成型氟树脂铲子 2025-03-13 15:05南京瑞尼克科技管悦 PFA铲子是一种由全氟烷氧基树脂(PFA)制成的工具,具有耐腐蚀、耐高低温、低溶出析出等特性,广泛应用于制药、实验室等领域。以 产品特性 耐腐蚀性:PFA铲子能够耐受强酸、强碱和有机溶剂,适用于腐蚀性环境。…

Cisco ASAv 9.23.1 - 思科自适应安全虚拟设备 (ASAv)

Cisco ASAv 9.23.1 - 思科自适应安全虚拟设备 (ASAv)Cisco ASAv 9.23.1 - 思科自适应安全虚拟设备 (ASAv) Cisco Adaptive Security Virtual Appliance (ASAv) 请访问原文链接:https://sysin.org/blog/cisco-asav/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.or…

CMU_15445_P4_Part3

Primary Key Index BUSTUB 支持使用下面的方式创建主键索引 CREATE TABLE t1(v1 int PRIMARY KEY); CREATE TABLE t1(v1 int, v2 int, PRIMARY KEY(v1, v2));当创建一个表的时候如果确定了主键, 那么这张表的 is_primary_key 会被设置为 true. 由于在 P4 中添加了主键相关的信息…

Hyper V文件复制优化:减少复制冲突与错误

在Hyper-V环境中进行文件复制时,为了减少复制冲突与错误,可以采取以下优化措施:一、权限设置与访问控制 确保足够的访问权限: 无论是使用共享文件夹还是其他复制方法,都要确保主机和虚拟机之间有足够的访问权限。权限设置不当可能会导致无法访问或复制文件失败。 在Window…

苍穹外卖开发记录 -day2

好久没写博了,这几天一直在写简历,投简历,然后吃闭门羹。加了个技术学习群,能和别人交流一下感觉还挺有用的。昨天和前天其实也在写苍穹外卖,都是写了一些增删改查的无聊接口。今天更新一下记录一下知识点。学了一个很重要的知识点是面向切面编程(AOP)。 AOP的概念 AOP的作…

Z.Fantasy.GenerateCode:代码生成器

Z.Fantasy.GenerateCode:代码生成器 在当今快速迭代的软件开发环境中,如何提高开发效率一直是开发者们关注的焦点。今天为大家推荐一款简单的代码生成工具 —— Z.Fantasy.GenerateCode,它不仅能帮助你快速生成代码,更能让代码生成过程变得优雅而灵活。 🌟 为什么选择 Z.…

[Java] Java 17 FAQ

概述: Java 17 FAQ for Java 17 Q: 利用反射机制给 private 属性的 Field 设置为 true(field.setAccessible(true))时报: "java.lang.reflect.InaccessibleObjectException: Unable to make field private int java.io.StringReader.next accessible: module java.base d…

Hyper-V单硬盘空间管理

在Hyper-V环境中,单硬盘空间管理是一项至关重要的任务,它直接关系到虚拟化环境的稳定性和性能。以下是一些关于Hyper-V单硬盘空间管理的关键策略和建议:一、磁盘空间紧张的原因分析 在Hyper-V环境中,磁盘空间紧张的原因多种多样,主要包括: 虚拟机快照积累:虚拟机快照是虚…

如何通过文件安全传输网关,解决堡垒机远程运维的安全问题?

堡垒机又称运维审计系统或跳板机,是指在特定网络环境下,为保障网络和数据不受内外部用户的入侵和破坏,运用技术手段监控和记录运维人员对网络内服务器、网络设备、安全设备、数据库等的操作行为,以实现集中报警、及时处理及审计定责的设备。当用户采用堡垒机开展远程运维和…

可以使用MathNet.Numerics生成一条X方向的N阶曲线

本文介绍不依赖贝塞尔曲线,如何绘制一条平滑曲线,用于解决无贝塞尔控制点的情况下绘制曲线、但数据点不在贝塞尔曲线的场景。 在上一家公司我做过一个平滑曲线编辑工具,用于轮椅调整加减速曲线。基于几个用户可控制的点,生成一条平滑的曲线,控制点需要保持在曲线上。 今天…