社区讨论

题解区三篇题解用了同样的 O(n^2) 写法

P8765 [蓝桥杯 2021 国 AB] 翻转括号序列参与者 5已保存回复 4

讨论操作

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

当前回复
4 条
当前快照
1 份
快照标识符
@mhjaxtci
此快照首次捕获于
2025/11/03 23:35
4 个月前
此快照最后确认于
2025/11/03 23:35
4 个月前
查看原帖
题解区五篇里有三篇的做法最坏是 n^2 的,分别是 Ristearzcq_qwqmeiyunxi。也就是说题解区的错误率高达 60%
后两个题解大概是抄的 Ristear 的第一篇题解,就以第一篇题解为例说明,第一篇题解的思路是对于询问的 LL 找到最大的 RR 使得区间和大于等于零,然后如何由 RR 得到答案(和等于 0 的区间),题解错误的使用了
C
while(S) {l-=S;S=query_sum(1,1,n,L,l);}
即从 RR (代码里的 l) 开始暴力减掉区间和指导区间和为 0。
看上去复杂度不是很对,实际上确实不对,考虑这样的样例:
C
25 1
()(()()()()()()()()()()()
2 1
这样的数据会让while循环执行12次,即长为 2n+12n+1 的字符串可以卡到 nn 次执行while循环。这样总复杂度就是 O(nq)O(nq) 的了
实际上这份代码的solve改为两次线段树上二分就可以正确的O(nlogn)O(n\log n)复杂度通过此题,防止被当作讨论区贴题解就不发完整代码了

回复

4 条回复,欢迎继续交流。

正在加载回复...