QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#91970#6128. Flippy Sequencesycheng#AC ✓70ms9364kbC++141.2kb2023-03-30 00:37:102023-03-30 00:37:13

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-03-30 00:37:13]
  • 评测
  • 测评结果:AC
  • 用时:70ms
  • 内存:9364kb
  • [2023-03-30 00:37:10]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 1009;
char a[N], b[N];
int n, d[N];
void work() {
    cin >> n;
    cin >> a + 1;
    cin >> b + 1;
    for(int i = 1; i <= n; i ++) {
        if(a[i] == b[i]) d[i] = 0;
        else d[i] = 1;
    }
    vector<pair<int,int>> v;
    for(int i = 1; i <= n; i ++) {
        if(d[i] == 1) {
            int l = i, r = i;
            while(d[r + 1] == 1 && r < n) r ++;
            v.push_back({l, r});
            i = r;
        }
    }
    if(v.size() >= 3) cout << "0" << '\n';
    else if(v.size() == 0) {
        cout << 1ll * n * (n + 1) / 2 << '\n';
    } else if(v.size() == 1) {
        int l = v[0].first;
        int r = v[0].second;
        if(l == r && n == 1) {
            cout << 0 << '\n';
            return;
        }
        long long ans = 2LL * (r - l);
        ans += 2LL * (l - 1);
        ans += 2LL * (n - r);
        cout << ans << '\n';
        return;
    }else if(v.size() == 2){
        cout << 6 << '\n';
    }
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int Case = 1;
    cin >> Case;
    while(Case --) work();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 3ms
memory: 5484kb

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: 70ms
memory: 9364kb

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