RC-v6 拼瓷砖 - 2022 RoboCom 世界机器人开发者大赛-高职组(省赛) (pintia.cn)
题意解析(只看题意解析,不用看代码): 2022 RoboCom 世界机器人开发者大赛 RC-v6 拼瓷砖_哔哩哔哩_bilibili
思想
数据1e3,可以直接模拟做
11,22,3*3一直扩下去呗,颜色不对就退循环,继续下一个方格
#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();
}
}