QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#488216#7855. 不跳棋Ender32k24 446ms199956kbC++143.0kb2024-07-23 18:28:182024-07-23 18:28:20

Judging History

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

  • [2024-07-23 18:28:20]
  • 评测
  • 测评结果:24
  • 用时:446ms
  • 内存:199956kb
  • [2024-07-23 18:28:18]
  • 提交

answer

#include <bits/stdc++.h>
#define eb emplace_back
#define mt make_tuple
#define mp make_pair
#define fi first
#define se second

using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pi;
typedef vector<int> vi;
bool Mbe;

const int N = 5e5 + 5;
const int inf = 1e9;

int n, top, fa[N], sz[N], son[N];
vector<int> G[N];

struct T {
	int d; ll c;
	T () : d(inf), c(0) { }
	T (int _d, ll _c) : d(_d), c(_c) { }
	T operator + (const T &rh) const {
		if (d < rh.d) return *this;
		if (d > rh.d) return rh;
		return T(d, c + rh.c);
	}
};

struct P {
	int x, y, d, op;
	T l, r, m;
	P () { }
	P (int _x, int _y, int _d, int _op, T _l, T _r, T _m) :
		x(_x), y(_y), d(_d), op(_op), l(_l), r(_r), m(_m) { }
};

int rt, tot;
struct S { 
	int lc, rc, fa, sz; P vl; 
	S () { }
	S (int _lc, int _rc, int _fa, int _sz, P _vl) :
		lc(_lc), rc(_rc), fa(_fa), sz(_sz), vl(_vl) { }
} t[N << 2];
#define ls(x) t[x].lc
#define rs(x) t[x].rc

P cp(const P &L, const P &R) {
	return P(L.x, R.y, L.d + R.d, 0, 
	L.l + T(L.d + R.l.d, R.l.c), 
	R.r + T(R.d + L.r.d, L.r.c),
	L.m + R.m + T(L.r.d + R.l.d, L.r.c * R.l.c));
}

P rk(const P &L, const P &R) {
	return P(L.x, L.y, L.d, 1, 
	L.l + R.l, L.r + T(L.d + R.l.d, R.l.c),
	L.m + R.m + T(L.l.d + R.l.d, L.l.c * R.l.c));
}

int bld(vi::iterator l, vi::iterator r, auto op) {
	if (l == r - 1) return *l;
	int sum = 0, cur = 0; auto mid = l;
	for (auto i = l; i != r; i++) sum += t[*i].sz;
	for (auto i = l; i != r; i++) {
		cur += t[*i].sz;
		if (cur * 2 <= sum) mid = i + 1;
	}
	int L = bld(l, mid, op), R = bld(mid, r, op);
	t[++tot] = S(L, R, 0, t[L].sz + t[R].sz, op(t[L].vl, t[R].vl)), t[L].fa = t[R].fa = tot;
	return tot;
}

void dfs1(int u, int f) {
	sz[u] = 1, fa[u] = f;
	t[u] = S(0, 0, 0, 1, P(f, u, 1, -1, T(1, 1), T(0, 1), T()));
	for (int v : G[u]) {
		if (v == f) continue;
		dfs1(v, u), sz[u] += sz[v];
		if (sz[v] > sz[son[u]]) son[u] = v;
	}
}

int dfs2(int u) {
	vi p = { u };
	while (son[u]) {
		vi q = { son[u] };
		for (int v : G[u]) 
			if (v != fa[u] && v != son[u]) q.eb(dfs2(v));
		p.eb(bld(q.begin(), q.end(), rk)), u = son[u];
	}
	return bld(p.begin(), p.end(), cp);
}

void solve() {
	cin >> n >> top, tot = n;
	for (int i = 1, u, v; i < n; i++)
		cin >> u >> v, G[u].eb(v), G[v].eb(u);
	dfs1(1, 0), rt = dfs2(1);
	ll lst = 0, u;
	for (int i = 1; i <= n - 2; i++) {
		cin >> u; 
		if (top) u ^= lst;
		t[u].vl.l = t[u].vl.r = t[u].vl.m = T();
		while (u = t[u].fa) {
			if (!t[u].vl.op) t[u].vl = cp(t[ls(u)].vl, t[rs(u)].vl);
			else t[u].vl = rk(t[ls(u)].vl, t[rs(u)].vl);
		}
		cout << t[rt].vl.m.d << ' ' << (lst = t[rt].vl.m.c) << '\n';
	}
}

// #define FILE

bool Med;
int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	cerr << (&Mbe - &Med) / 1048576.0 << " MB\n";
	#ifdef FILE
		freopen(".in", "r", stdin);
		freopen(".out", "w", stdout);
	#endif
	int T = 1;
	// cin >> T;
	while (T--) solve();
	cerr << (int)(1e3 * clock() / CLOCKS_PER_SEC) << " ms\n";
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Pretests


Final Tests

Test #1:

score: 0
Memory Limit Exceeded

input:

100 0
1 2
2 3
2 4
3 5
4 6
4 7
3 8
7 9
4 10
3 11
5 12
5 13
11 14
13 15
10 16
5 17
13 18
18 19
3 20
3 21
6 22
18 23
5 24
17 25
6 26
8 27
21 28
8 29
24 30
29 31
2 32
3 33
1 34
31 35
34 36
15 37
2 38
4 39
3 40
37 41
8 42
2 43
28 44
10 45
44 46
35 47
4 48
38 49
9 50
6 51
38 52
30 53
39 54
43 55
43 56
26 ...

output:


result:


Test #2:

score: 0
Memory Limit Exceeded

input:

100 0
1 2
1 3
3 4
2 5
2 6
1 7
5 8
6 9
8 10
8 11
3 12
4 13
12 14
4 15
1 16
4 17
14 18
17 19
8 20
17 21
9 22
12 23
12 24
16 25
19 26
21 27
15 28
5 29
12 30
19 31
15 32
22 33
6 34
29 35
2 36
22 37
16 38
19 39
17 40
11 41
13 42
30 43
17 44
24 45
21 46
17 47
40 48
20 49
3 50
13 51
16 52
30 53
43 54
41 55...

output:


result:


Test #3:

score: 0
Memory Limit Exceeded

input:

100 0
1 2
1 3
1 4
4 5
3 6
1 7
1 8
3 9
9 10
4 11
10 12
3 13
10 14
9 15
11 16
6 17
15 18
8 19
13 20
18 21
21 22
2 23
19 24
7 25
5 26
23 27
22 28
5 29
15 30
2 31
15 32
31 33
26 34
27 35
18 36
14 37
15 38
11 39
11 40
38 41
2 42
12 43
8 44
11 45
42 46
33 47
11 48
5 49
15 50
6 51
35 52
9 53
18 54
33 55
13...

output:


result:


Test #4:

score: 0
Memory Limit Exceeded

input:

1000 0
1 2
1 3
3 4
2 5
4 6
3 7
4 8
2 9
7 10
6 11
2 12
2 13
5 14
11 15
15 16
6 17
16 18
2 19
19 20
14 21
20 22
12 23
23 24
3 25
18 26
9 27
23 28
18 29
12 30
28 31
5 32
9 33
11 34
5 35
21 36
23 37
6 38
30 39
29 40
16 41
22 42
41 43
28 44
39 45
9 46
15 47
22 48
3 49
46 50
24 51
34 52
43 53
4 54
33 55
4...

output:


result:


Test #5:

score: 0
Memory Limit Exceeded

input:

1000 0
1 2
2 3
1 4
2 5
5 6
4 7
2 8
3 9
8 10
10 11
10 12
6 13
7 14
1 15
1 16
11 17
6 18
2 19
12 20
1 21
20 22
19 23
23 24
15 25
10 26
18 27
27 28
28 29
12 30
26 31
16 32
32 33
24 34
6 35
21 36
9 37
8 38
36 39
26 40
15 41
18 42
41 43
39 44
7 45
23 46
3 47
47 48
28 49
26 50
39 51
4 52
45 53
52 54
6 55
...

output:


result:


Test #6:

score: 0
Memory Limit Exceeded

input:

1000 0
1 2
2 3
3 4
2 5
1 6
1 7
1 8
3 9
2 10
10 11
3 12
9 13
9 14
10 15
10 16
16 17
16 18
15 19
6 20
17 21
8 22
3 23
13 24
2 25
20 26
10 27
15 28
19 29
7 30
16 31
22 32
26 33
24 34
6 35
35 36
29 37
8 38
7 39
12 40
19 41
34 42
34 43
34 44
10 45
31 46
40 47
47 48
36 49
29 50
7 51
47 52
33 53
47 54
29 5...

output:


result:


Test #7:

score: 0
Memory Limit Exceeded

input:

200000 0
1 2
2 3
2 4
1 5
3 6
4 7
4 8
3 9
5 10
8 11
8 12
7 13
11 14
11 15
14 16
15 17
7 18
7 19
15 20
15 21
12 22
14 23
9 24
8 25
18 26
22 27
8 28
2 29
15 30
3 31
24 32
10 33
18 34
12 35
3 36
32 37
20 38
37 39
21 40
1 41
28 42
3 43
21 44
22 45
26 46
44 47
47 48
44 49
27 50
41 51
49 52
6 53
27 54
6 55...

output:


result:


Test #8:

score: 0
Memory Limit Exceeded

input:

200000 0
1 2
1 3
1 4
1 5
5 6
4 7
2 8
2 9
9 10
8 11
6 12
10 13
6 14
6 15
6 16
12 17
9 18
15 19
10 20
3 21
8 22
15 23
8 24
6 25
8 26
11 27
14 28
27 29
8 30
9 31
24 32
15 33
19 34
26 35
2 36
17 37
15 38
8 39
30 40
11 41
26 42
17 43
41 44
32 45
9 46
30 47
31 48
41 49
38 50
2 51
42 52
35 53
30 54
10 55
2...

output:


result:


Test #9:

score: 0
Memory Limit Exceeded

input:

200000 0
1 2
2 3
2 4
2 5
4 6
3 7
4 8
5 9
6 10
8 11
3 12
8 13
11 14
2 15
11 16
6 17
1 18
6 19
2 20
17 21
19 22
1 23
11 24
2 25
12 26
7 27
3 28
6 29
9 30
17 31
12 32
27 33
21 34
27 35
16 36
22 37
23 38
7 39
11 40
8 41
1 42
6 43
40 44
41 45
44 46
34 47
14 48
20 49
47 50
33 51
21 52
14 53
41 54
52 55
37...

output:


result:


Test #10:

score: 4
Accepted
time: 148ms
memory: 199800kb

input:

200000 0
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20 21
21 22
22 23
23 24
24 25
25 26
26 27
27 28
28 29
29 30
30 31
31 32
32 33
33 34
34 35
35 36
36 37
37 38
38 39
39 40
40 41
41 42
42 43
43 44
44 45
45 46
46 47
47 48
48 49
49 50
50 51
51 52
52...

output:

1 199997
1 199995
1 199993
1 199991
1 199989
1 199987
1 199985
1 199983
1 199981
1 199979
1 199977
1 199975
1 199973
1 199971
1 199969
1 199967
1 199965
1 199963
1 199961
1 199959
1 199957
1 199955
1 199953
1 199951
1 199949
1 199947
1 199945
1 199943
1 199941
1 199939
1 199937
1 199935
1 199933
1 1...

result:

ok 199998 lines

Test #11:

score: 0
Memory Limit Exceeded

input:

200000 0
1 2
1 3
3 4
1 5
1 6
2 7
1 8
7 9
4 10
5 11
7 12
2 13
10 14
11 15
9 16
15 17
13 18
9 19
10 20
14 21
12 22
20 23
22 24
21 25
16 26
20 27
24 28
27 29
27 30
21 31
28 32
24 33
26 34
31 35
29 36
33 37
33 38
38 39
35 40
30 41
36 42
40 43
34 44
44 45
43 46
44 47
45 48
39 49
49 50
41 51
50 52
51 53
4...

output:


result:


Test #12:

score: 0
Memory Limit Exceeded

input:

200000 0
1 2
1 3
1 4
4 5
3 6
1 7
2 8
7 9
7 10
9 11
2 12
11 13
12 14
14 15
13 16
10 17
12 18
11 19
14 20
17 21
19 22
12 23
17 24
14 25
19 26
25 27
23 28
26 29
29 30
23 31
31 32
27 33
28 34
26 35
34 36
36 37
34 38
32 39
29 40
40 41
41 42
38 43
37 44
34 45
40 46
38 47
47 48
45 49
40 50
40 51
45 52
50 5...

output:


result:


Test #13:

score: 4
Accepted
time: 160ms
memory: 199356kb

input:

200000 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20 21
21 22
22 23
23 24
24 25
25 26
26 27
27 28
28 29
29 30
30 31
31 32
32 33
33 34
34 35
35 36
36 37
37 38
38 39
39 40
40 41
41 42
42 43
43 44
44 45
45 46
46 47
47 48
48 49
49 50
50 51
51 52
52...

output:

1 199997
1 199995
1 199993
1 199991
1 199989
1 199987
1 199985
1 199983
1 199981
1 199979
1 199977
1 199975
1 199973
1 199971
1 199969
1 199967
1 199965
1 199963
1 199961
1 199959
1 199957
1 199955
1 199953
1 199951
1 199949
1 199947
1 199945
1 199943
1 199941
1 199939
1 199937
1 199935
1 199933
1 1...

result:

ok 199998 lines

Test #14:

score: 4
Accepted
time: 144ms
memory: 199956kb

input:

200000 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20 21
21 22
22 23
23 24
24 25
25 26
26 27
27 28
28 29
29 30
30 31
31 32
32 33
33 34
34 35
35 36
36 37
37 38
38 39
39 40
40 41
41 42
42 43
43 44
44 45
45 46
46 47
47 48
48 49
49 50
50 51
51 52
52...

output:

1 199997
1 199995
1 199993
1 199991
1 199989
1 199987
1 199985
1 199983
1 199981
1 199979
1 199977
1 199975
1 199973
1 199971
1 199969
1 199967
1 199965
1 199963
1 199961
1 199959
1 199957
1 199955
1 199953
1 199951
1 199949
1 199947
1 199945
1 199943
1 199941
1 199939
1 199937
1 199935
1 199933
1 1...

result:

ok 199998 lines

Test #15:

score: 4
Accepted
time: 116ms
memory: 199048kb

input:

200000 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20 21
21 22
22 23
23 24
24 25
25 26
26 27
27 28
28 29
29 30
30 31
31 32
32 33
33 34
34 35
35 36
36 37
37 38
38 39
39 40
40 41
41 42
42 43
43 44
44 45
45 46
46 47
47 48
48 49
49 50
50 51
51 52
52...

output:

1 199997
1 199995
1 199993
1 199991
1 199989
1 199987
1 199985
1 199983
1 199981
1 199979
1 199977
1 199975
1 199973
1 199971
1 199969
1 199967
1 199965
1 199963
1 199961
1 199959
1 199957
1 199955
1 199953
1 199951
1 199949
1 199947
1 199945
1 199943
1 199941
1 199939
1 199937
1 199935
1 199933
1 1...

result:

ok 199998 lines

Test #16:

score: 4
Accepted
time: 142ms
memory: 199176kb

input:

200000 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20 21
21 22
22 23
23 24
24 25
25 26
26 27
27 28
28 29
29 30
30 31
31 32
32 33
33 34
34 35
35 36
36 37
37 38
38 39
39 40
40 41
41 42
42 43
43 44
44 45
45 46
46 47
47 48
48 49
49 50
50 51
51 52
52...

output:

1 199997
1 199995
1 199993
1 199991
1 199989
1 199987
1 199985
1 199983
1 199981
1 199979
1 199977
1 199975
1 199973
1 199971
1 199969
1 199967
1 199965
1 199963
1 199961
1 199959
1 199957
1 199955
1 199953
1 199951
1 199949
1 199947
1 199945
1 199943
1 199941
1 199939
1 199937
1 199935
1 199933
1 1...

result:

ok 199998 lines

Test #17:

score: 0
Memory Limit Exceeded

input:

200000 1
1 2
1 3
2 4
1 5
3 6
1 7
7 8
7 9
4 10
4 11
11 12
12 13
7 14
10 15
1 16
5 17
11 18
11 19
1 20
19 21
18 22
20 23
21 24
21 25
6 26
24 27
2 28
8 29
29 30
6 31
4 32
14 33
2 34
3 35
18 36
23 37
35 38
10 39
28 40
35 41
17 42
1 43
5 44
14 45
23 46
35 47
10 48
10 49
20 50
41 51
14 52
21 53
7 54
5 55
...

output:


result:


Test #18:

score: 0
Memory Limit Exceeded

input:

200000 1
1 2
2 3
2 4
2 5
4 6
3 7
5 8
5 9
9 10
1 11
2 12
1 13
3 14
10 15
4 16
11 17
6 18
8 19
6 20
7 21
15 22
19 23
20 24
12 25
14 26
18 27
22 28
28 29
16 30
30 31
23 32
9 33
7 34
24 35
7 36
9 37
15 38
8 39
18 40
4 41
30 42
22 43
17 44
17 45
9 46
22 47
21 48
44 49
37 50
44 51
23 52
42 53
16 54
43 55
...

output:


result:


Test #19:

score: 0
Memory Limit Exceeded

input:

200000 1
1 2
1 3
2 4
3 5
5 6
5 7
1 8
3 9
8 10
8 11
7 12
11 13
3 14
4 15
7 16
12 17
9 18
10 19
19 20
15 21
16 22
13 23
13 24
14 25
17 26
17 27
19 28
18 29
24 30
21 31
29 32
24 33
30 34
31 35
34 36
27 37
37 38
34 39
33 40
38 41
34 42
42 43
36 44
35 45
43 46
44 47
41 48
43 49
47 50
48 51
42 52
46 53
49...

output:


result:


Test #20:

score: 0
Memory Limit Exceeded

input:

200000 1
1 2
1 3
3 4
3 5
2 6
3 7
6 8
8 9
9 10
6 11
10 12
9 13
8 14
10 15
10 16
16 17
15 18
16 19
18 20
17 21
21 22
20 23
22 24
19 25
21 26
22 27
26 28
23 29
24 30
29 31
30 32
31 33
30 34
32 35
35 36
34 37
36 38
38 39
37 40
35 41
36 42
38 43
38 44
41 45
44 46
41 47
47 48
44 49
44 50
49 51
48 52
49 53...

output:


result:


Test #21:

score: 4
Accepted
time: 446ms
memory: 197964kb

input:

500000 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61...

output:

2 124999250001
2 124998750003
2 124998250006
2 124997750010
2 124997250015
2 124996750021
2 124996250028
2 124995750036
2 124995250045
2 124994750055
2 124994250066
2 124993750078
2 124993250091
2 124992750105
2 124992250120
2 124991750136
2 124991250153
2 124990750171
2 124990250190
2 124989750210
...

result:

ok 499998 lines

Test #22:

score: 0
Memory Limit Exceeded

input:

500000 1
1 2
1 3
2 4
2 5
3 6
2 7
1 8
5 9
5 10
2 11
11 12
9 13
9 14
13 15
12 16
11 17
11 18
12 19
12 20
3 21
7 22
8 23
5 24
12 25
8 26
10 27
22 28
21 29
14 30
29 31
27 32
2 33
33 34
11 35
23 36
33 37
17 38
22 39
25 40
22 41
26 42
42 43
26 44
8 45
28 46
24 47
1 48
17 49
19 50
15 51
38 52
13 53
18 54
1...

output:


result:


Test #23:

score: 0
Memory Limit Exceeded

input:

500000 1
1 2
1 3
3 4
4 5
2 6
6 7
4 8
8 9
1 10
9 11
1 12
3 13
10 14
8 15
4 16
8 17
8 18
9 19
14 20
14 21
20 22
14 23
19 24
9 25
19 26
20 27
11 28
23 29
7 30
29 31
12 32
11 33
13 34
5 35
12 36
22 37
13 38
4 39
19 40
1 41
26 42
14 43
37 44
25 45
34 46
32 47
32 48
43 49
7 50
22 51
16 52
8 53
41 54
34 55...

output:


result:


Test #24:

score: 0
Memory Limit Exceeded

input:

500000 1
1 2
1 3
1 4
2 5
4 6
3 7
5 8
3 9
4 10
4 11
7 12
1 13
10 14
10 15
3 16
1 17
5 18
7 19
8 20
8 21
9 22
22 23
17 24
12 25
6 26
17 27
7 28
7 29
10 30
28 31
5 32
4 33
18 34
25 35
32 36
27 37
11 38
11 39
1 40
34 41
34 42
34 43
3 44
31 45
32 46
25 47
10 48
31 49
4 50
39 51
29 52
50 53
12 54
45 55
38...

output:


result:


Test #25:

score: 0
Memory Limit Exceeded

input:

500000 1
1 2
1 3
1 4
3 5
1 6
6 7
3 8
4 9
3 10
8 11
10 12
2 13
11 14
10 15
5 16
13 17
8 18
12 19
3 20
3 21
10 22
17 23
5 24
18 25
21 26
10 27
2 28
27 29
21 30
14 31
9 32
2 33
26 34
28 35
24 36
27 37
19 38
2 39
37 40
39 41
35 42
31 43
20 44
21 45
15 46
7 47
5 48
25 49
13 50
32 51
50 52
4 53
7 54
38 55...

output:


result: