1 条题解

  • 0
    @ 2025-10-8 16:54:08
    #include<bits/stdc++.h>
    using namespace std;
    const int N=5e6+5;char a[N],b[N];
    int main()
    {
        scanf("%s%s",a+1,b+1);
        int len=strlen(a+1);
        for(int i=1;i<=len;i++)
        {
            if(a[i]==b[i])a[i]=b[i]=0;
            else a[i]=b[i]=1;
        }
        if(len==1)
        {
            if(a[1]==0)printf("0\n");else printf("1\n");
            return 0;
        }
        if(len==2)
        {
            if(a[1]!=a[2])printf("impossible\n");
    		else if(a[1]==a[2])
    		{
    			if(a[1]==0)printf("0\n");else printf("1\n");
    		}
            return 0;
        }
        int n1=1,n2=0;
        a[1]^=1;a[2]^=1;
        for(int i=1;i<=len-1;i++)
        {
            if(a[i]==1){a[i]^=1;a[i+1]^=1;a[i+2]^=1;n1++;}
    		if(b[i]==1){b[i]^=1;b[i+1]^=1;b[i+2]^=1;n2++;}
        }
        if(a[len]==1)n1=1e8;
        if(b[len]==1)n2=1e8;
        int ans=min(n1,n2);
        if(ans==int(1e8))printf("impossible\n");
        else printf("%d\n",ans);
        return 0;
    }
    
    • 1

    信息

    ID
    829
    时间
    1000ms
    内存
    128MiB
    难度
    5
    标签
    递交数
    72
    已通过
    27
    上传者