题解 CF1391B 【Fix You】
题目链接:https://www.luogu.com.cn/problem/CF1391B
题意:给定一个n∗m
的网格传送带,每个传送带上都有一个方向为,D代表向下,R代表向右。我们可以改变传送的的方向。(只能在下右之间做调整。)其中(n,m)
处为柜台,我们要使得网格传送带上的行李都能到达柜台处,求我们至少要进行多少次操作更改。
思路:我们发现,所有的货物都是向右或者向下的,也就是说所有的货物最终都是会运到网格传送带的最右端或最下端。因此,我们只需要将最右端处的传送带改成向下,最下端的传送带改成向右就可以满足题目要求了。
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
char cell[103][103];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int t;
cin>>t;
while(t--)
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
cin>>cell[i][j];
}
int ans=0;
for(int i=1;i<n;i++)//控制最右端的
{
if(cell[i][m]=='R')
ans++;
}
for(int i=1;i<m;i++)
{
if(cell[n][i]=='D')//控制最下端的
ans++;
}
cout<<ans<<endl;
}
return 0;
}