【题解】CF1742C题解
CF1742C 题解
思路分析
题目保证至少会染一条行或列,而且染的色会覆盖。
所以最后染色的行或列必定为全红或全蓝,不能有格子被覆盖。不然就绝对不是最后一次的染色,就一定有后来染色的行或列去覆盖它。
所以有一下两种判断方式:
- 判断某一行是否全部为红色。是,则最后一次用红色。否则,最后一次用蓝色。
- 判断某一列是否全部为蓝色。是,则最后一次用蓝色。否则,最后一次用红色。
任选一种进行判断即可。这里我们选用第 1 种方式。因为行遍历相对容易实现。
关键代码
void solve()
{
for(int i = 1;i <= 8;i++)
{
bool pd = (s[i][1] == 'R'); //先判断第一个,为后面的与运算做铺垫。
for(int j = 2;j <= 8;j++)
{
pd = (pd && (s[i][j] == 'R'));
}
if(pd)
{
cout << "R" << endl;
return;
}
}
cout << "B" << endl; //前面全部红色的已经返回了,执行到此绝对为蓝色。
//(因为不可能不染色)
}

浙公网安备 33010602011771号