启发题:https://codeforces.com/gym/104531/problem/I
判断 s t r [ l : r ] str[l:r] str[l:r] 是否合法:
- 把所有
?
替换成 ‘(’,然后前缀和记为 s s s,满足任意时刻 s i ≥ s l − 1 s_i\ge s_{l-1} si≥sl−1 - 把所有
?
替换成 ‘)’,然后后缀和记为 t t t,满足任意时刻 t i ≥ t r + 1 t_i\ge t_{r+1} ti≥tr+1
注意,这是一个充要条件(在 r − l + 1 r-l+1 r−l+1 为偶数的情况下)
分析题目时可以把 s , t s,t s,t 通过单调栈维护来弄一下奇奇怪怪的操作。