D. 区间翻转

    传统题 文件IO:invert 1000ms 512MiB

区间翻转

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

区间翻转

题目描述

给定一个长度为 nn、仅由字符 () 组成的字符串 ss

你需要选择一个非空区间 \([l,r]\),并将区间内的每个括号反转:

  • ( 变为 )
  • ) 变为 (

若操作后的整个字符串是合法括号序列,则称区间 [l,r][l,r] 是合法的。

一个括号序列合法,当且仅当:

  1. 任意前缀中,左括号数量不少于右括号数量;
  2. 整个字符串中,左括号与右括号数量相等。

求合法区间的数量。

输入格式

从文件 invert.in 中读入数据。

第一行一个整数 nn

第二行一个长度为 nn 的括号字符串 ss

输出格式

输出到文件 invert.out 中。

输出一个整数,表示合法区间的数量。

样例

输入:

4
()()

输出:

1

数据规模与约定

对于所有数据:

  • 1n1061 \le n \le 10^6
  • 字符串仅包含 ()
  • 原始字符串 ss 是合法括号序列。

本题采用子任务测试。

测试点 分值 限制 特性
1-2 10 n20n \le 20
3-4 n3000n \le 3000
5-6 前面一半是(,后面一半是)
7-8 n104n \le 10^4 ()交替出现
9-10 假设有k块,每块都是kik_i个(,和kik_i个)
11-12
13-14 n106n \le 10^6 ()交替出现
15-16 假设有k块,每块都是kik_i个(和kik_i个)
17-18 前面一半是(,后面一半是)
19-20

OI模式测试

未参加
状态
已结束
规则
OI
题目
4
开始于
2026-8-18 9:00
结束于
2026-8-18 12:00
持续时间
3 小时
主持人
参赛人数
7