[POI 2022/2023 R1] ply

Luogu
IDLGP9805
Time3000ms
Memory512MB
DifficultyP3
POI(波兰)20222023
定义“合法括号串”及其深度如下: - 空串是一个合法括号串,深度为 $0$。 - 如果 $w$ 是一个合法括号串,深度为 $h$,则 $(w)$ 也是一个合法括号串,深度为 $h+1$。 - 如果 $w_1$ 和 $w_2$ 都是合法括号串,深度分别为 $h_1$ 和 $h_2$,则 $w_1w_2$ 也是一个合法括号串,深度为 $\max(h_1,h_2)$。 定义翻转一个字符为: - 如果当前字符为 `(`,修改为 `)`。 - 如果当前字符为 `)`,修改为 `(`。 你需要通过翻转 $s$ 当中某些字符使得深度不超过 $H$,求最小操作次数。 ## Input 第一行两个数字 $n \ (2 \leq n \leq 10^6)$ 和 $H \ (1 \leq H \leq \frac{n}{2})$,分别表示 $|s|$ 和要求修改后不超过的深度。 第二行一个字符串 $s$,表示原来的括号串。 ## Output 输出最小修改次数。 [samples] ## Background 题目译自 [POI2022~2023R1 ply](https://sio2.mimuw.edu.pl/c/oi30-1/p/ply/)。 ## Note 对于样例,可以修改为 `(()()())`,这样深度为 $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$ 为样例。
Samples
Input #1
8 2
(()(()))
Output #1
2
API Response (JSON)
{
  "problem": {
    "name": "[POI 2022/2023 R1] ply",
    "description": {
      "content": "定义“合法括号串”及其深度如下: - 空串是一个合法括号串,深度为 $0$。 - 如果 $w$ 是一个合法括号串,深度为 $h$,则 $(w)$ 也是一个合法括号串,深度为 $h+1$。 - 如果 $w_1$ 和 $w_2$ 都是合法括号串,深度分别为 $h_1$ 和 $h_2$,则 $w_1w_2$ 也是一个合法括号串,深度为 $\\max(h_1,h_2)$。 定义翻转一个字符为: - 如",
      "description_type": "Markdown"
    },
    "platform": "Luogu",
    "limit": {
      "time_limit": 3000,
      "memory_limit": 524288
    },
    "difficulty": {
      "LuoguStyle": "P3"
    },
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "LGP9805"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "定义“合法括号串”及其深度如下:\n\n- 空串是一个合法括号串,深度为 $0$。\n- 如果 $w$ 是一个合法括号串,深度为 $h$,则 $(w)$ 也是一个合法括号串,深度为 $h+1$。\n- 如果 $w_1$ 和 $w_2$ 都是合法括号串,深度分别为 $h_1$ 和 $h_2$,则 $w_1w_2$ 也是一个合法括号串,深度为 $\\max(h_1,h_2)$。\n\n定义翻转一个字符为:\n\n- 如...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments