QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#720532 | #6128. Flippy Sequence | MLK2 | AC ✓ | 64ms | 11804kb | C++14 | 1.5kb | 2024-11-07 13:10:47 | 2024-11-07 13:10:47 |
Judging History
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