题解 CF1391B 【Fix You】

kradcigam

2020-08-10 11:47:53

Solution

题目大概就是在说,对于任意 $(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; } ```