QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#94068#6128. Flippy SequenceCSU2023#AC ✓96ms9352kbC++141.3kb2023-04-05 10:08:482023-04-05 10:08:50

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-04-05 10:08:50]
  • 评测
  • 测评结果:AC
  • 用时:96ms
  • 内存:9352kb
  • [2023-04-05 10:08:48]
  • 提交

answer

#include <bits/stdc++.h>

template <class T>
inline void read(T &res)
{
	char ch; bool flag = false; res = 0;
	while (ch = getchar(), !isdigit(ch) && ch != '-');
	ch == '-' ? flag = true : res = ch ^ 48;
	while (ch = getchar(), isdigit(ch))
		res = res * 10 + ch - 48;
	flag ? res = -res : 0; 
}

template <class T>
inline void put(T x)
{
	if (x > 9)
		put(x / 10);
	putchar(x % 10 + 48);
}

template <class T>
inline void CkMin(T &x, T y) {x > y ? x = y : 0;}

using std::pair;
using std::vector;
typedef pair<int, int> pir; 
const int N = 1e6 + 5;
int T_data, n, a[N]; char s[N], t[N];

#define mk(x, y) std::make_pair(x, y)

int main()
{
	read(T_data);
	while (T_data--)
	{
		read(n);
		scanf("%s%s", s + 1, t + 1);
		for (int i = 1; i <= n; ++i)
			a[i] = (s[i] - '0') ^ (t[i] - '0');
		vector<pir> cur;
		cur.clear();
		for (int i = 1, j; i <= n; i = j + 1)
			if (a[i] == 1)
			{
				j = i;
				while (j + 1 <= n && a[j + 1] == 1)
					++j;
				cur.emplace_back(mk(i, j));
			}
			else 
				j = i;
	
		int cur_cnt = cur.size();		
		if (cur_cnt >= 3)
			puts("0");
		else if (cur_cnt == 2)
			puts("6");
		else if (cur_cnt == 1)
			put((cur[0].first - 1 + n - cur[0].second + cur[0].second - cur[0].first) * 2), putchar('\n');
		else 
			put(1ll * n * (n + 1) / 2), putchar('\n');
	}
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 3516kb

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: 96ms
memory: 9352kb

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