题意:
给三个数x,y,l,如果命令是BLACK,就在(x,y)到(x+L-1,y+L-1)里涂黑色,
WHITE就在(x,y)到(x+L-1,y+L-1)里涂白色,
TEST就在x,y)到(x+L-1,y+L-1)里统计范围中黑色方块的数目。
做法:由于数据范围就是100*100所以可以放心大胆的模拟+暴力,时间貌似还是0ms
#include<iostream>
#include<Cstdio>
using namespace std;
int map[200][200];
int main()
{
int size, i, j, p;
int startX, endX, startY, endY, L, count;
char ming[10];
for(i = 1; i <= 100; i++)
{
for(j = 1; j <= 100; j++)
{
map[i][j] = 0;
}
}
scanf("%d", &size);
for(p = 0; p <size; p++)
{
scanf("%s", ming);
if(ming[0] == 'B')
{
scanf("%d%d%d", &startX, &startY, &L);
endX = startX + L - 1; endY = startY + L - 1;
for(i = startX; i <= endX; i++)
{
for(j = startY; j <= endY; j++)
{
map[i][j] = 1;
}
}
}
else if(ming[0] == 'W')
{
scanf("%d%d%d", &startX, &startY, &L);
endX = startX + L - 1; endY = startY + L - 1;
for(i = startX; i <= endX; i++)
{
for(j = startY; j <= endY; j++)
{
map[i][j] = 2;
}
}
}
else
{
scanf("%d%d%d", &startX, &startY, &L);
endX = startX + L - 1; endY = startY + L - 1;
count = 0;
for(i = startX; i <= endX; i++)
{
for(j = startY; j <= endY; j++)
{
if(map[i][j] == 1)
count++;
}
}
cout << count << endl;
}
}
}