专栏文章

CF1781F Bracket Insertion (学习笔记)

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min88k1g
此快照首次捕获于
2025/12/01 22:10
3 个月前
此快照最后确认于
2025/12/01 22:10
3 个月前
查看原文
将(视为1,)是为-1,则是合法字符串的充要条件为
  1. 任意位置前缀和非负
  2. 总和为0
对于本题,条件2显然满足,考虑条件1
设插入位置原本前缀和为x
  • 插入()后变为x,x+1,x
  • 插入)(后变为x,x-1,x
即分为了三段
fi,jf_{i,j} 表示i次插入,原数字为j合法的概率
插入():
fn,x=pi=0n1j=0ni1Cn1iCni1jfi,xfj,xfn1ij,x+1f_{n,x}= p*\sum^{n-1}_{i=0}\sum_{j=0}^{n-i-1} C_{n-1}^{i}*C_{n-i-1}^{j} * f_{i,x}*f_{j,x}*f_{n-1-i-j,x+1}
插入)(:
fn,x=(1p)i=0n1j=0ni1Cn1iCni1jfi,xfj,xfn1ij,x1f_{n,x}= (1-p)*\sum^{n-1}_{i=0}\sum_{j=0}^{n-i-1} C_{n-1}^{i}*C_{n-i-1}^{j} * f_{i,x}*f_{j,x}*f_{n-1-i-j,x-1}
至此,我们得到了一个 O(n4)O(n^4) 的做法
考虑优化
考虑把j的枚举去除
把有关i的放一起
(以()为例)
fn,x=(1p)i=0n1Cn1ifi,xj=0ni1Cni1jfj,xfn1ij,x+1f_{n,x}= (1-p)*\sum^{n-1}_{i=0}C_{n-1}^{i}*f_{i,x}*\sum_{j=0}^{n-i-1} C_{n-i-1}^{j} * f_{j,x}*f_{n-1-i-j,x+1}
gn,x=j=0nCnjfj,xfnj,x+1g_{n,x}=\sum_{j=0}^{n} C_{n}^{j}*f_{j,x}*f_{n-j,x+1}
所以 fn,x=pi=0n1Cn1ifi,xgni1,xf_{n,x}= p*\sum^{n-1}_{i=0}C_{n-1}^{i}*f_{i,x}*g_{n-i-1,x}
对于)(,新开一个h,十分类似
hn,x=j=0nCnjfj,xfnj,x1h_{n,x}=\sum_{j=0}^{n} C_{n}^{j}*f_{j,x}*f_{n-j,x-1}
所以fn,x=i=0n1Cn1ifi,x(pgni1,x+(1p)hni1,x)f_{n,x}=\sum^{n-1}_{i=0}C_{n-1}^{i}*f_{i,x}*(p*g_{n-i-1,x} + (1-p)*h_{n-i-1,x})
复杂度 O(n3)O(n^3)
生成方案有 135...(2n1)1*3*5*...*(2n-1) 种,最后除掉即为答案

评论

0 条评论,欢迎与作者交流。

正在加载评论...