2022睿抗省赛专科组 RC-v6 拼瓷砖 模拟

97 阅读1分钟

RC-v6 拼瓷砖 - 2022 RoboCom 世界机器人开发者大赛-高职组(省赛) (pintia.cn)

题意解析(只看题意解析,不用看代码): 2022 RoboCom 世界机器人开发者大赛 RC-v6 拼瓷砖_哔哩哔哩_bilibili

思想

数据1e3,可以直接模拟做

11,22,3*3一直扩下去呗,颜色不对就退循环,继续下一个方格

image.png

#include<bits/stdc++.h> 
using namespace std;
#define int long long
const int N = 1e6 + 10;
int n, x, y, m, k, key, a[N], z, b[N], d;
char o[2000][2000];
int p[2000][2000];
void slove()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			cin >> o[i][j];
		}
	}
	auto check = [&](int x, int y, int len) {
		for (int i = x; i <= len + x; i++)
		{
			for (int j = y; j <= len + y; j++)
			{
				if (o[i][j] != o[x][y])
				{
					return 0;
				}
			}
		}
		for (int i = x; i <= len + x; i++)
		{
			for (int j = y; j <= len + y; j++)
			{
				p[i][j] = 1;
			}
		}
		return 1;
	};
	map<pair<char, int>, int> mp;
	set<pair<char, int> > v;
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			if (p[i][j])
			{
				continue;
			}
			for (int k = 1;; k++)
			{
				if (!check(i, j, k))
				{
					mp[{o[i][j], k}]++;
					v.insert({ o[i][j],k });

					break;
				}
			}
		}
	}
	for (auto [x, y] : v)
	{
		cout << "color = " << x << "; size = " << y << "; amount = " << mp[{x, y}] << endl;
	}
}
signed main()
{
	int t = 1;

	while (t--)
	{
		slove();
	}
}