QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#656705 | #6128. Flippy Sequence | kazimiyuuka | AC ✓ | 175ms | 9536kb | C++20 | 1.4kb | 2024-10-19 13:35:28 | 2024-10-19 13:35:33 |
Judging History
answer
#include <iostream>
#include <string>
#include <string.h>
#include <vector>
#include <algorithm>
#include <cmath>
#include <set>
#include <random>
#include <cstdlib>
#include <numeric>
#include <functional>
#include <queue>
using namespace std;
using ll = long long;
ll mod = 1e9 + 7;
void slove()
{
int n;
cin >> n;
string s(n + 1, 0), t(n + 1, 0);
for (int i = 1; i <= n; i++)
cin >> s[i];
for (int i = 1; i <= n; i++)
cin >> t[i];
vector<int> tmp(n + 1, 0);
for (int i = 1; i <= n; i++)
if (s[i] != t[i])
tmp[i] = 1;
vector<pair<int, int>> data;
// 处理为连续的区间
for (int i = 1; i <= n; i++)
{
if (tmp[i] == 1)
{
int j = i;
while (j + 1 <= n && tmp[j + 1] == 1)
j++;
data.emplace_back(i, j);
i = j;
}
}
if (data.size() > 2)
{
cout << 0 << endl;
return;
}
else if (data.size() == 2)
{
cout << 6 << endl;
}
else if (data.size() == 1)
{
int ans = n - (data[0].second - data[0].first + 1);
ans += (data[0].second - data[0].first);
ans *= 2;
cout << ans << endl;
}
else {
ll ans = (ll)n * (ll)(n - 1) / 2;
ans += n;
cout << ans << endl;
}
return;
}
int main()
{
//freopen("out.txt", "w", stdout);
//freopen("in.txt", "r", stdin);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int cnt = 1;
cin >> cnt;
while (cnt--)
{
slove();
}
};
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3552kb
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: 175ms
memory: 9536kb
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