当前位置: 首页 > news >正文

CF1781F Bracket Insertion

有一个空括号串 \(s\),接下来进行 \(n\) 次操作:

  • 假设当前括号序列长度为 \(l\),则在产生的 \(l+1\) 个空位中随机选择一个

  • 在当前空位以 \(p\) 的概率插入 \(\texttt{()}\),以 \(1-p\) 的概率插入 \(\texttt{)(}\)

求所有操作结束后 \(s\) 是合法括号串的概率,对 \(998244353\) 取模。


考虑一个括号串合法,当且仅当将 \(\texttt{(}\) 看成 \(1\)\(\texttt{)}\) 看成 \(-1\) 后:

  • \(\sum\limits_{i=1}^{|s|} s_i = 0\)

  • \(\sum\limits_{i=1}^{p} s_i \geq 0\)

容易发现,在题目的限制下,第一个限制一定是自动满足的。

对于修改操作,我们发现加入的部分不会影响两边的前缀和。

为了判断第二个性质,我们考虑刻画可重集 \(S\),维护 \(s\) 的前缀和。

初始时,\(S\) 中只有一个 \(0\),接下来每次操作可以抽象成:

  • \(S\) 中随机选择一个元素 \(x\)

  • \(S\) 中以 \(p\) 的概率加入 \(x\)\(x+1\),以 \(1-p\) 的概率加入 \(x\)\(x-1\)

则最终我们希望 \(S\) 中的所有元素都 \(\geq 0\)

考虑概率这个东西显然很不好刻画,我们把它转成方案数。

首先,总共的方案数一定是 \(\prod\limits_{i=1}^{n} (2i - 1)\),接下来我们算合法方案。

你发现新加入的数相当于另一个初始状态,考虑据此设计 dp。

我们令 \(dp_{x,t}\) 表示初始 \(S\) 中只有一个 \(x\),操作 \(t\) 次后仍然合法的方案数。

显然,我们的答案为 \(dp_{0,n}\),接下来我们考虑怎么转移。

不妨先考虑以 \(p\) 的概率加入 \(x\)\(x+1\) 这种情况。

此时,我们加入后会构成三个基本状态,包括两个 \(x\) 和一个 \(x+1\)

接下来我们就是在这 \(3\) 个状态的基础上进行扩展,也就是说:

\[dp_{x,t} \leftarrow dp_{x,t} + p \times \sum\limits_{t_1 + t_2 + t_3 = t-1} \dfrac{(t-1)!}{t_1! \times t_2! \times t_3!} \times dp_{x,t_1} \times dp_{x,t_2} \times dp_{x+1,t_3} \]

第二种情况:

\[dp_{x,t} \leftarrow dp_{x,t} + (1-p) \times \sum\limits_{t_1 + t_2 + t_3 = t-1} \dfrac{(t-1)!}{t_1! \times t_2! \times t_3!} \times dp_{x,t_1} \times dp_{x,t_2} \times dp_{x-1,t_3} \]

这看起来很显然,于是你尝试转移,发现直接枚举复杂度 \(O(n^5)\) 炸了。

然而你发现 \(t_1 + t_2 + t_3 = t-1\),所以我们不需要枚举 \(t\)

然而这还是 \(O(n^4)\),根本过不去。

你发现这东西一项一项做,卷积就是 \(O(n^3)\) 的了。

http://www.jsqmd.com/news/263896/

相关文章:

  • 8. vLLM vs TensorRT-LLM
  • 如何配置Dev-C++使用特定的编译器版本?
  • 深入解析:浏览器底层探秘:Chrome的奇妙世界
  • 如何在Dev-C++中设置编译器参数?
  • 4. 为什么 Triton 不够了
  • day143—递归—对称二叉树(LeetCode-101)
  • 5. vLLM 出现前的推理地狱
  • MCC音频剪辑工具v1.1.0.0:自动处理配音气口间隙 - 教程
  • 6. PagedAttention 的历史背景
  • 数据湖与数据仓库的演进与未来:一场技术辩论
  • RNR-Map:为视觉导航构建“可渲染”的新型视觉导航地图 - MKT
  • 全网最全MBA开题报告TOP8一键生成论文工具测评
  • 2. 训练 vs 推理:真正烧钱的是哪一步
  • win10 电脑 蓝牙耳机连接后没有声音
  • 为什么大厂都在做智能运维AI平台?AI应用架构师解析背后的商业逻辑
  • 3. OpenAI / DeepSeek 推理系统演进史
  • 为什么所有主流LLM都使用SwiGLU?
  • 模拟南宁理工学院官网页面
  • 2026年长沙婚纱礼服推荐租赁排名:年初备婚请看 - charlieruizvin
  • 兰亭妙微洞察:B 端与 C 端界面设计核心差异,别再用 C 端思维做 B 端
  • 兰亭妙微:以交互设计与UI设计赋能文旅小程序,重塑用户体验界面设计优化新标杆
  • 计算机毕设怎么写?从选题到答辩的超详细通关攻略
  • Linux软件安装 —— JDK安装
  • HTML标签的使用 - 标题和段落
  • YOLO26 接入实时视频 - GPU 加速2
  • 【Linux】带上时区
  • 视觉语言导航(VLN)入门基础! - MKT
  • 数论1:整除、同余、质数筛
  • MySQL Buffer Pool深度解析:当缓存页不足时如何基于LRU算法进行淘汰 - 详解
  • 内存管理-MMU