QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#720532#6128. Flippy SequenceMLK2AC ✓64ms11804kbC++141.5kb2024-11-07 13:10:472024-11-07 13:10:47

Judging History

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

  • [2024-11-07 13:10:47]
  • 评测
  • 测评结果:AC
  • 用时:64ms
  • 内存:11804kb
  • [2024-11-07 13:10:47]
  • 提交

answer

#include <bits/stdc++.h>
#define N (200000 + 10)  /*------------------ #define ------------------*/
#define M (400000 + 10)
#define MOD (1000000000 + 7)
//#define MOD (998244353)
#define INF (0x3f3f3f3f)
#define LNF (3e18)
#define mod(a,b) (((a)%(b)+(b))%(b))
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define fi first
#define se second
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;
typedef pair<LL,LL> PLL;
typedef pair<int,LL> PIL;
typedef pair<LL,int> PLI;
typedef pair<double,double> PDD;

auto solve(){
	
	int n;
	string s,t;
	cin >> n >> s >> t;
	vector<int> a(n);
	for(int i = 0;i < n;i ++ )
		a[i] = (s[i] != t[i]);
	
	int odd = 0;
	vector<PII> path; // fi 长度 se 奇偶性 0 偶 1 奇
	for(int i = 0;i < n;i ++ ){
		int j = i;
		while(j + 1 < n && a[j + 1] == a[i]) j ++ ;
		path.push_back({j - i + 1,a[i]});
		if(a[i] > 0) odd ++ ;
		i = j;
	}
	
	if(odd >= 3){
		cout << 0 << '\n';
	}else if(odd == 2){
		cout << 6 << '\n';
	}else if(odd == 1){
		int a = 0,b = 0,L = 0;
		for(auto t : path)
			if(t.se)
				L = t.fi;
		if(path[0].se == 0) a = path[0].fi;
		if(path.back().se == 0) b = path.back().fi;
		cout << (2ll * (L - 1) + 2ll * a + 2ll * b) << '\n';
	}else{
		int L = path[0].fi;
		cout << (1ll * (L + 1) * L / 2) << '\n';
	}
}

signed main(){
	IOS
	int T = 1;
	cin >> T;
	while(T -- ) solve();
	//while(T -- ) cout << (solve() ? "YES" : "NO") << '\n';

    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3540kb

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: 64ms
memory: 11804kb

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