CF *3300

1. CF1340F Nastya and CBS

brute force, data structures, hashing。
https://www.luogu.com.cn/problem/CF1340F
题意:定义 \(t,-t(t>0)\) 为一组匹配的括号。维护一个序列,支持单点修改,查询一段区间是否为合法括号序列。
\(n,q\leq 10^5\)

我们考虑线段树维护区间,遇到两个相邻的匹配括号就删掉。此时一段区间要么是不合法的,要么是一段 \(<0\) 的接上一段 \(>0\) 的。现在问题是如何合并:如果左子树 \(>0\) 的部分短于右子树 \(<0\) 的部分,那么要么左子树全部匹配,要么不合法。问题变为,提取右子树前面一段的哈希值,可以在右子树内部单侧递归求解。复杂度 \(O(n\log^2 n)\)

posted @ 2025-09-24 10:41  KiharaTouma  阅读(15)  评论(0)    收藏  举报