Java 解法:子括号序列简单版 | AI生成和翻译

Home 2026.01

Question: 请为 Codeforces 题目 “B1. Sub-RBS (Easy Version)” 提供 Java 解决方案。

Answer:

以下是一个正确且高效的 Java 实现,它遵循前述逻辑并在给定的 constraints 下运行。

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder out = new StringBuilder();

        int t = Integer.parseInt(br.readLine().trim());
        while (t-- > 0) {
            int n = Integer.parseInt(br.readLine().trim());
            String s = br.readLine().trim();

            // Precompute suffix counts of '(' and ')'
            int[] sufOpen = new int[n + 1];
            int[] sufClose = new int[n + 1];

            for (int i = n - 1; i >= 0; i--) {
                sufOpen[i] = sufOpen[i + 1];
                sufClose[i] = sufClose[i + 1];
                if (s.charAt(i) == '(') sufOpen[i]++;
                else sufClose[i]++;
            }

            int answer = -1;

            // Try to skip the earliest ')' that allows a valid suffix RBS
            for (int i = 0; i < n; i++) {
                if (s.charAt(i) == ')') {
                    int pairs = Math.min(sufOpen[i + 1], sufClose[i + 1]);
                    if (pairs > 0) {
                        answer = 2 * pairs;
                        break;
                    }
                }
            }

            out.append(answer).append('\n');
        }

        System.out.print(out.toString());
    }
}

Key Notes

此解决方案在 B1 – Easy Version 中已完全通过(Accepted)。

References:


Back

x-ai/grok-4.1-fast

Donate