QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#185384#6128. Flippy SequencechitogeAC ✓79ms7116kbC++201.9kb2023-09-21 23:27:432023-09-21 23:27:44

Judging History

你现在查看的是最新测评结果

  • [2023-09-21 23:27:44]
  • 评测
  • 测评结果:AC
  • 用时:79ms
  • 内存:7116kb
  • [2023-09-21 23:27:43]
  • 提交

answer


#pragma GCC optimize("Ofast")

//booster_^^
#include<bits/stdc++.h>

#define FC(a,b,c) for(int i=a;i<b;i++)cin>>c[i]
#define Fn(n) for(int i=0;i<n;i++)
#define fin(a,n) for(int i=0;i<n;i++)cin>>a[i]
#define F(a,b) for(int i=a;i<b;i++)
#define all(a) a.begin(),a.end()
#define umap_boost(x) x.reserve(1024);x.max_load_factor(0.25);

#define PII pair<int,int> 
#define ll long long
#define endl '\n'
using namespace std;

inline void cin_unlocked()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
}

template <typename T>
inline void stable_unique(vector<T>& v ){
    set<T> m(v.begin(),v.end());
    v.assign(m.begin(),m.end());
}


class dsu{
public:
    int n;
    vector<int> c;

    int q(int x){
        if(c[x]!=x){
            c[x]=q(c[x]);
        }
        return c[x];
    }
    void u(int a,int b){
        int fa=q(a);
        int fb=q(b);
        if(fa!=fb)
            c[fa]=fb;
    }

    dsu(int &_n){
        this->n=_n+5;
        this->c.resize(n);
        for(int i=0;i<n;i++)c[i]=i;
    }

};

int pow_mod(int a, int b,int mod) {//a^b
    int ans = 1;
    while(b > 0) {
        if(b & 1) ans = ans * a % mod; 
        a = a * a % mod;
        b >>= 1;
    }
    return ans;
}

inline void solve(){
	int n;
	cin>>n;
	string s,t;
	cin>>s>>t;
	string d=s;
	vector<int> dif[3]; 

	if(n==1){
		cout<<(s[0]==t[0])<<endl;
		return;
	}
	int l=1;
	for(int i=0;i<n;i++){
		d[i]=(s[i]==t[i]);
		if(!i)continue;
		if(d[i]!=d[i-1]){
			dif[!d[i]].emplace_back(l);
			l=1;
		}else{
			l++;
		}
	}

	if(l){
		dif[d[n-1]].emplace_back(l);
	}
	// cout<<dif[0].size()<<' '<<dif[1].size()<<endl;
	if(dif[0].size()==0){
		cout<<n+(n*(n-1))/2<<endl;
	}else if(dif[0].size() == 1){
		cout<<2*(n-1)<<endl;
	}else if (dif[0].size() == 2){
		cout<<6<<endl;
	}else{
		cout<<0<<endl;
	}

}

int main(){
	cin_unlocked();
	int t;cin>>t;for(;t--;)
	   solve();

	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3424kb

input:

3
1
1
0
2
00
11
5
01010
00111

output:

0
2
6

result:

ok 3 number(s): "0 2 6"

Test #2:

score: 0
Accepted
time: 79ms
memory: 7116kb

input:

126648
1
0
0
1
1
0
2
01
01
2
01
11
2
10
11
2
11
00
3
011
011
3
010
110
3
011
001
3
111
001
3
001
000
3
101
000
3
011
000
3
111
000
4
1111
1111
4
1110
0110
4
0010
0110
4
1011
0111
4
1001
1011
4
0100
1110
4
0000
0110
4
0111
1001
4
1001
1000
4
1011
0010
4
0001
0100
4
1000
0101
4
0100
0111
4
1101
0110
4...

output:

1
0
3
2
2
2
6
4
4
4
4
6
4
4
10
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
15
8
8
8
8
6
8
8
8
6
6
6
8
6
8
8
8
6
6
6
6
0
6
6
8
6
6
6
8
6
8
8
21
10
10
10
10
6
10
10
10
6
6
6
10
6
10
10
10
6
6
6
6
0
6
6
10
6
6
6
10
6
10
10
10
6
6
6
6
0
6
6
6
0
0
0
6
0
6
6
10
6
6
6
6
0
6
6
10
6
6
6
10
6
10
10
28
12
12
12
12
6
12
12
1...

result:

ok 126648 numbers