玄关求改
  • 板块灌水区
  • 楼主sunyiming0617
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/5 18:51
  • 上次更新2024/8/5 19:57:08
查看原帖
玄关求改
1017470
sunyiming0617楼主2024/8/5 18:51

p10766 string

#include<bits/stdc++.h>
using namespace std;
const int N=500005;
char s[N],t[N];
int n,f[N][2];
int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%s%s",s+1,t+1);
		n=strlen(s+1);
		for(int i=1;i<=n;++i)
		{
			s[i]-='0';
			t[i]-='0';
		}
		for(int i=1;i<=n;++i)
		{
			f[i][0]=f[i][1]=0;
		}
		for(int i=1;i<=n;++i)
		{
			if(s[i]==t[i])
			{
				f[i][0]=f[i-1][0];
				f[i][1]=f[i-1][1];
			}else{
				f[i][0]=f[i][1]=min(f[i-1][0],f[i-1][1])+1;
			}
			if(s[i]==0&&t[i]==1)
			{
				f[i][1]=min(f[i][1],f[i-1][0]);
			}
			if(s[i]==1&&t[i]==0)
			{
				f[i][0]=min(f[i][0],f[i-1][1]);
			}
		}
		printf("%d\n",min(f[n][0],f[n][1]));
	}
	return 0;
}
2024/8/5 18:51
加载中...