[16届蓝桥杯 2025 c++省 B] 水质检测
思路:分类讨论,从左到右枚举,判断当前的河床和下一个河床的距离是第一行更近还是第二行更近还是都一样近,分成三类编写代码即可
#include<iostream>
using namespace std;
int main(){
string s1,s2;
cin>>s1>>s2;
s1=' '+s1;
s2=' '+s2;
int n=s1.size();
int l=n,r=1;
for(int i=1;i<n;++i){
if(s1[i]=='#'||s2[i]=='#'){
l=min(l,i);
r=max(r,i);
}
}
int ans=0;
for(int i=l;i<r;++i){
if(s1[i]=='#'&&s1[i+1]=='.'&&s2[i]=='.'){
ans++;
s1[i+1]='#';
}
else if(s2[i]=='#'&&s2[i+1]=='.'&&s1[i]=='.'){
ans++;
s2[i+1]='#';
}
else if(s1[i]=='#'&&s2[i]=='#'&&s1[i+1]=='.'&&s2[i+1]=='.'){
int j1=i+1,j2=i+1;
while(s1[j1++]=='.');
while(s2[j2++]=='.');
if(j1<=j2){
ans++;
s1[i+1]='#';
}
else{
ans++;
s2[i+1]='#';
}
}
}
cout<<ans;
return 0;
}