题解 CF1391B 【Fix You】
kradcigam
2020-08-10 11:47:53
题目大概就是在说,对于任意 $(i,j)$ 都有一个标记,如果标记为 $\texttt{D}$ j就是说到了这个格子会往下走,否则就是往右走。现在问你,如果最少要修改多少个格子的标记使得 $i\neq n$ 且 $j\neq m$,就一定能顺着格子的路径走到 $(n,m)$,不会出界。
我们发现一个格子的标记要么是向下走,要么是向右走,因此,不会出左边界和右边界。然后,就只有可能出下边界和右边界了,然后出下边界就一定是最后一行的格子标记为下(除了 $(n,m)$),同理出右边界一定最后一列的格子标记为右(除了 $(n,m)$)。
因此,答案为这些格子的个数。
```cpp
int work(){
int n,m;read(n);read(m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
char ch;cin>>ch;
if(ch=='R')a[i][j]=1;
else a[i][j]=2;
}
int ans=0;
for(int i=1;i<m;i++)
if(a[n][i]==2)ans++;
for(int i=1;i<n;i++)
if(a[i][m]==1)ans++;
cout<<ans<<endl;
return 0;
}
```