CF1680B 题解
Jerrlee✅
2022-05-15 14:23:34
## 题意
$t$ 组数据,每组数据给定 $n$ 和 $m$ 和 $n \times m$ 的矩形。
矩形中的 `R` 代表机器人,`E` 代表空地。每次操作可以使**所有**机器人向上或下或左或右移动一格。问能否在**所有**机器人不出格的情况下使**其中一个**机器人达到左上角。
## 思路
既然要到左上角,那就可以只向上或左移动。
反过来思考,怎样会使机器人出格?
- 向左时出格,那就不向左,向上;
- 向上时出格,那就不向上,向左。
那么,如果以上两种情况,无论如何移动都会导致机器人出格,肯定是类似如下图的情况:
```
ERE
REE
```
这类情况,必定是最左边的机器人上方还有机器人,或者说最上面的机器人左边还有机器人。
反过来,只要所有机器人横纵坐标最小值的位置有机器人,那说明可以满足题意,反之则不能。
## 代码
```cpp
#include<iostream>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int n,m;
cin>>n>>m;
int mx=n,mn=m;
char x[n][m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>x[i][j];
if(x[i][j]=='R'){
mx=min(mx,i);
mn=min(mn,j);
}
}
}
if(x[mx][mn]=='R') cout<<"YES\n";
else cout<<"NO\n";
}
}
```
[AC 记录(洛谷)](https://www.luogu.com.cn/record/75791402)
[AC 记录(CF)](https://codeforces.com/contest/1680/submission/157255831)