P9805 [POI 2022/2023 R1] ply

题目背景

题目译自 [POI2022~2023R1 ply](https://sio2.mimuw.edu.pl/c/oi30-1/p/ply/)。

题目描述

定义“合法括号串”及其深度如下: - 空串是一个合法括号串,深度为 $0$。 - 如果 $w$ 是一个合法括号串,深度为 $h$,则 $(w)$ 也是一个合法括号串,深度为 $h+1$。 - 如果 $w_1$ 和 $w_2$ 都是合法括号串,深度分别为 $h_1$ 和 $h_2$,则 $w_1w_2$ 也是一个合法括号串,深度为 $\max(h_1,h_2)$。 定义翻转一个字符为: - 如果当前字符为 `(`,修改为 `)`。 - 如果当前字符为 `)`,修改为 `(`。 你需要通过翻转 $s$ 当中某些字符使得深度不超过 $H$,求最小操作次数。

输入格式

第一行两个数字 $n \ (2 \leq n \leq 10^6)$ 和 $H \ (1 \leq H \leq \frac{n}{2})$,分别表示 $|s|$ 和要求修改后不超过的深度。 第二行一个字符串 $s$,表示原来的括号串。

输出格式

输出最小修改次数。

说明/提示

对于样例,可以修改为 `(()()())`,这样深度为 $2$。 子任务分配如下: | 子任务编号 | 特殊性质 | 分值 | | :-----------: | :-----------: | :-----------: | | $1$ | $n \leq 20$ | $20$ | | $2$ | $n \leq 3000$ | $40$ | | $3$ | $n \leq 10^6$ 且 $H = h-1$ | $20$ | | $4$ | $n \leq 10^6$ | $20$ | 注:$h$ 为输入的括号串的深度。 本题中,子任务 $0$ 为样例。