求优化
  • 板块P3392 涂国旗
  • 楼主yhm_22344
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/26 16:08
  • 上次更新2024/3/26 18:58:39
查看原帖
求优化
1136226
yhm_22344楼主2024/3/26 16:08
#include<iostream>
#include<cstring>
#include<algorithm>
#include<map>

using namespace std;

const int N = 60;

int n, m;
char arr[N][N];

int get(char f[], char op)
{
	map<char, int> mp;
	for (int i = 0; i < m; i++)	mp[f[i]]++;
	return (m - mp[op]);
}

int main()
{
	cin >> n >> m;

	int res = 0, cnt = n*m;
	for (int i = 1; i <= n; i++)	cin >> arr[i];

	res = get(arr[1], 'W') + get(arr[n], 'R');

	for (int i = 2; i <= n - 1; i++)
	{
		int sum = 0;
		int cnt_of_B = 0;
		int cnt_of_W = 0;
		int cnt_of_R = 0;
		for (int j = 2; j < i; j++)
		{
			cnt_of_B += get(arr[j], 'B');
			cnt_of_W += get(arr[j], 'W');
		}
		sum += min(cnt_of_W, cnt_of_B);

		cnt_of_B = 0;
		for (int j = i + 1; j <= n - 1; j++)
		{
			cnt_of_B += get(arr[j], 'B');
			cnt_of_R += get(arr[j], 'R');
		}
		sum += min(cnt_of_B, cnt_of_R);
		sum += get(arr[i], 'B');
		cnt = min(cnt, sum);
	}

	cout << res + cnt << endl;

	return 0;
}
2024/3/26 16:08
加载中...