AT. 【模板】树上 K 级祖先

    Type: RemoteJudge 3000ms 500MiB

【模板】树上 K 级祖先

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目背景

本题仅作为长链剖分求树上 kk 级祖先评测用,不保证卡掉了其他复杂度不正确的做法。

题目描述

给定一棵 nn 个点的有根树。

qq 次询问,第 ii 次询问给定 xi,kix_i, k_i,要求点 xix_ikik_i 级祖先,答案为 ansians_i。特别地,ans0=0ans_0 = 0

本题中的询问将在程序内生成。

给定一个随机种子 ss 和一个随机函数 get(x)\operatorname{get}(x)

#define ui unsigned int
ui s;

inline ui get(ui x) {
	x ^= x << 13;
	x ^= x >> 17;
	x ^= x << 5;
	return s = x; 
}

你需要按顺序依次生成询问。

did_i 为点 ii 的深度,其中根的深度为 11

对于第 ii 次询问,$x_i = ((\operatorname{get}(s) \operatorname{xor} ans_{i-1}) \bmod n) + 1$,$k_i = (\operatorname{get}(s) \operatorname{xor} ans_{i-1}) \bmod d_{x_i}$。

输入格式

第一行三个整数 n,q,sn, q, s

第二行 nn 个整数 f1nf_{1\dots n},其中 fif_i 表示 ii 的父亲。特别地,若 fi=0f_i = 0,则 ii 为根。

输出格式

一行一个整数,表示 xori=1qi×ansi\operatorname{xor}_{i=1}^q i \times ans_i

6 3 7
5 5 2 2 0 3

1

提示

【样例说明】

x1=4x_1 = 4k1=1k_1 = 1ans1=2ans_1 = 2
x2=6x_2 = 6k2=3k_2 = 3ans2=5ans_2 = 5
x3=3x_3 = 3k3=0k_3 = 0ans3=3ans_3 = 3
故输出 11


对于 20%20\% 的数据,n,q103n,q \le 10^3

对于 50%50\% 的数据,n,q105n,q \le 10^5

对于 100%100\% 的数据,2n5×1052 \le n \le 5 \times 10^51q5×1061 \le q \le 5 \times 10^61s<2321 \le s < 2^{32}

【蒙青创】A班CSP备战模板

Not Claimed
Status
Done
Problem
68
Open Since
2025-10-24 0:00
Deadline
2025-10-31 23:59
Extension
24 hour(s)