Java,就过了第五个,求大佬,自己调不出
  • 板块P3392 涂国旗
  • 楼主fzdkx
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/28 11:41
  • 上次更新2024/3/28 12:38:07
查看原帖
Java,就过了第五个,求大佬,自己调不出
1293520
fzdkx楼主2024/3/28 11:41


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;

/**
 * @author 发着呆看星
 * @create 2024/3/27
 */
public class Main {
    static int n;
    static int m;
    static int[][] nums;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StreamTokenizer in = new StreamTokenizer(br);
        in.nextToken();
        n = (int) in.nval;
        in.nextToken();
        m = (int) in.nval;
        // 预处理数组
        // 0 --> 白 , 1 --> 蓝 ,2 --> 红
        nums = new int[n][3];
        // n行
        for (int i = 0; i < n; i++) {
            int w = 0;
            int b = 0;
            int r = 0;
            char[] temp = br.readLine().toCharArray();
            for (char c : temp) {
                if (c == 'W') {
                    w++;
                } else if (c == 'B') {
                    b++;
                } else {
                    r++;
                }
            }
            nums[i][0] = w;
            nums[i][1] = b;
            nums[i][2] = r;
        }
        compute();
        br.close();
    }

    // 枚举,两条线
    // 线的限制     b > a >= 1
    public static void compute() {
        int ans = Integer.MAX_VALUE;
        for (int i = 1; i < n - 1; i++) {
            for (int j = i + 1; j < n; j++) {
                // [0,i)
                // [i,j)
                // [j,n-1]
                int temp = 0;
                // 白
                for (int l = 0; l < i; l++) {
                    temp += (m - nums[l][0]);
                }
                // 蓝
                for (int l = i; l < j; l++) {
                    temp += (m - nums[l][1]);
                }
                // 红
                for (int l = j; l < n; l++) {
                    temp += (m - nums[l][2]);
                }
                // 取最小
                ans = Math.min(temp, ans);
            }
        }
        // 最终答案
        System.out.println(ans);
    }
}
2024/3/28 11:41
加载中...