P3392 涂国旗

发布时间 2023-12-05 20:58:01作者: 拍手称快

[P3392 涂国旗]{https://www.luogu.com.cn/problem/P3392}
这题我一开始思路是先把至少一行的定完了,再去通过比较个数来确定区域的颜色。这是个错误的想法(没法保证连续性)
但其实题目已经提示的很明显了,连续且一整行,所以直接按题目要求来,三个区域意味着两条分界线,枚举两条分界线的所有情况就ok了。

#include <iostream>
#include <string>
#include <algorithm>
#include <iomanip>
using namespace std;
char a[51][51];
int b[51];


int main() {
	int n, m;
	cin >> n >> m ;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> a[j][i];
		}
	}

	int min = 999999999;

	for (int i = 1; i <= n - 2; i++) {
		for (int j = i + 1; j <= n - 1; j++) {
			for (int k = 1; k <= i ; k++) {
				for (int p = 1; p <= m; p++) {
					if (a[p][k] != 'W') {
						b[1]++;
					}
				}
			}
			for (int k = i + 1 ; k <= j ; k++) {
				for (int p = 1; p <= m; p++) {
					if (a[p][k] != 'B') {
						b[1]++;
					}
				}
			}
			for (int k = j + 1 ; k <= n  ; k++) {
				for (int p = 1; p <= m; p++) {
					if (a[p][k] != 'R') {
						b[1]++;
					}
				}
			}
			if (b[1] <= min) {
				min = b[1];

			}
			
			b[1] = 0;
		}
	}
	cout <<  min;
	return 0;
}