WA #3求调
查看原帖
WA #3求调
756684
寄风孤影楼主2024/7/20 17:25
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair <int , int>
#define getchar() (xS == xTT && (xTT = (xS = xB) + fread(xB , 1 , 1 << 23 , stdin) ,xS == xTT) ? 0 : *xS++)
#define putchar(x) (p3 - obuf < 1000000) ? (*p3++ = x) : (fwrite(obuf , p3 - obuf , 1 , stdout) , p3 = obuf , *p3++ = x)
char xch,xB[1<<23],*xS=xB,*xTT=xB,obuf[1000000],*p3=obuf;
inline int read(){
    char op = getchar();
    int x = 0, f = 1;
    while(op < '0' || op > '9'){
        f = (op == '-' ? -1 : 1);
        op = getchar();
    }
    while (op >= '0' && op <= '9') {
        x = (x << 1) + (x << 3) + (op ^ 48);
        op = getchar();
    }
    return x * f;
}
static char cc[20];
template <class T>
inline void pt(T x){
    int len = 0;
    if(!x) return putchar('0') , void();
    if(x < 0){
        x = -x;
		putchar('-');
	}
    while(x){
        cc[len++] = x % 10 + '0';
		x /= 10;
	}
    while(len--) putchar(cc[len]);
}
inline void yes(){
    putchar('Y');
    putchar('e');
    putchar('s');
    putchar('\n');
}
inline void no(){putchar('N');putchar('o');putchar('\n');}
inline void solve(){
    int n;
    string a,b;
    cin>>n>>a>>b;
    string ssh;
    for(int i=1; i<=n; i++) ssh += '0';
    if((a==ssh)^(b==ssh)){
        cout<<"-1\n";
        return ;
    }
    else if(a==ssh||a==b){
        cout<<"0\n";
        return ;
    }
    int id1,id2;
    for(int i=0;i<n;i++){
        if(a[i]=='1'){
            id1=i;
            break;
        }
    }
    for(int i=0;i<n;i++){
        if(b[i]=='1'){

            id2=i;
            break;
        }
    }
    vector <int> ans;
    auto wk=[&](){
        for(int i=id1+1;i<n;i++){
            if((a[i]-'0')^(b[i]-'0')){
                ans.push_back(id1-i);
                for(int j=i;j<n;j++){
                    int f1=a[j]-'0',f2=a[j-i+id1]-'0';
                    f1^=f2;
                    a[j]=f1+'0';
                }
            }
        }
    };
    if(id1==id2){
        wk();
    }
    else if(id1>id2){
        ans.push_back(id1-id2);
        for(int j=id2,k=1;k<=id1+1;j++,k++){
            int f1=a[j]-'0',f2=a[j-id2+id1]-'0';
            f1^=f2;
            a[j]=f1+'0';
        }
        id1=id2;
        wk();
    }
    else{
        wk();
        int id3;
        for(int i=n-1;i>=0;i--){
            if(a[i]=='1'){
                id3=i;
                break;
            }
        }
        ans.push_back(id3-id1);
    }
    cout<<ans.size()<<'\n';
    for(auto v:ans)cout<<v<<' ';
    cout<<'\n';
}
/*
1
3
101
010
*/
signed main(){
    int T;
    cin>>T;
    while(T--)solve();
	fwrite(obuf , p3 - obuf , 1 , stdout);
}
2024/7/20 17:25
加载中...