int longestValidParentheses(string s) { int l = 0, r = 0, ans = 0; for (int i = 0; i < s.length(); i++) { if (s[i] == '(')l++; else r++; if (r > l)l = r = 0; else if (r == l)ans = max(ans, 2 * r); } l = r = 0; for (int i = s.length() - 1; i >= 0; i--) { if (s[i] == ')')l++; else r++; if (r > l)l = r = 0; else if (r == l)ans = max(ans, 2 * r); } return ans; } int main() { int n; int b; cin >> n; cin >> b; string s; cin >> s; //string s = "))(((())()()()())("; cout << (b - longestValidParentheses(s)) / 2; }
题解::先找到最长括号对,然后剩下的除以二
浙公网安备 33010602011771号