2 条题解
-
1
lucky
不难想到,括号匹配。
令 ,
于是用 stack 维护,不难发现,其第几轮删除(匹配)是容易计算的。于是,最后我们按删除的顺序加贡献就行了。
具体地,设匹配为 其中 且 是左括号,则在令 表示 在第几轮删除(不删除为 ),则 。
最后,按照删除的顺序遍历,维护每个括号位置删没删,发现这很简单。
按顺序遍历
//用 bit 维护 位置 i 有没有被删。 for i in [1, n] for j in 在 i 删除的位置 ans <- ans + j - Q(j) // 有几个被删掉就去掉几个。 for j in 在 i 删除的位置 add(j, 2) // 删掉
信息
- ID
- 2768
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 16
- 已通过
- 9
- 上传者