专栏文章

题解:P10161 [DTCPC 2024] 小方的疑惑 10

P10161题解参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mipsrdq4
此快照首次捕获于
2025/12/03 17:20
3 个月前
此快照最后确认于
2025/12/03 17:20
3 个月前
查看原文
考虑这样一个字符串如何计算它有多少个子串为合法的括号序列:
CPP
()(()()())((()))
答案为 3×42+3×42+1×22+1×22=14\frac{3 \times 4}{2} + \frac{3 \times 4}{2} + \frac{1 \times 2}{2} + \frac{1 \times 2}{2} = 14
这个时候,我们意识到一个重要结论:只有不在括号内或者在同一个括号内的括号,才能组合计算贡献。假设有 nn 个括号能组合计算贡献,它的贡献是 n×n+12\frac{n \times n+1}{2}
这很好理解,比如:
CPP
(()()())
中间的三对括号被包围在最外面的括号当中,它们三个的贡献之和为 3×22=3\frac{3 \times 2}{2} = 3
最外层的括号没有在任何括号内部,所以它的贡献就是 1×22=1\frac{1 \times 2}{2} = 1
知道了这个以后,直接和其他题解一样 dp 之后构造就好了,如果长度不够的话,直接在后面加右括号,显然不会对答案产生任何影响。

评论

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

正在加载评论...