#P7172. [COCI2020-2021#3] Specijacija

    ID: 6329 Type: RemoteJudge 4000ms 1024MiB Tried: 0 Accepted: 0 Difficulty: 6 Uploaded By: Tags>2020最近公共祖先,LCA可持久化线段树COCI

[COCI2020-2021#3] Specijacija

题目描述

给定一个正整数 nn 个一个满足 i(i1)2<aii(i+1)2\frac{i(i-1)}{2} \lt a_i \le \frac{i(i+1)}{2} 的正整数序列 a1,a2,,ana_1, a_2, \cdots, a_n

该序列是一棵包含 (n+1)(n+2)2\frac{(n+1)(n+2)}{2} 个节点的树参数化而来的,它包括 n+1n+1 层,每层分别包括 1,2,,n+11, 2, \cdots, n+1 个节点,如图所示:

它由 a=(1,2,6)a=(1,2,6) 参数化而来。

ii 层包含节点 i(i1)2+1,,i(i+1)2\frac{i(i-1)}{2}+1, \cdots, \frac{i(i+1)}{2}。节点 aia_i 有两个孩子,而其他同层的节点都只有一个孩子。

请回答 qq 个询问,求 x,yx,y 的最大公共祖先,即既是 xx 的祖先,又是 yy 的祖先且权值最大的节点。

输入格式

第一行包含三个整数 n,q,tn,q,t,分别表示参数的数量、询问次数和用来决定节点权值的参数。

第二行输入一个长度为 nn 的序列 aa(其中对于每一个数 aia_ii(i1)2<aii(i+1)2\frac{i(i-1)}{2} \lt a_i \le \frac{i(i+1)}{2})。

接下来的 qq 行中的第 ii 行包含两个整数 x~i\tilde x_iy~i\tilde y_i($1 \le \tilde x_i, \tilde y_i \le \frac{(n+1)(n+2)}{2}$),用来决定询问时节点的权值。

ziz_i 为第 ii 次询问的结果,规定 z0=0z_0=0。第 ii 次询问的权值为:

$$x_i=[(\tilde x_i-1+t \times z_{i-1}) \bmod \frac{(n+1)(n+2)}{2}]+1 $$$$x_i=[(\tilde y_i-1+t \times z_{i-1}) \bmod \frac{(n+1)(n+2)}{2}]+1 $$

注:当参数 t=0t=0 时,满足 xi=x~ix_i=\tilde x_iyi=y~iy_i=\tilde y_i。当 t=1t=1 时,权值应通过先前的答案来决定。

输出格式

输出共 qq 行,其中第 ii 行,输出 xix_iyiy_i 的最大公共祖先。

3 5 0
1 2 6
7 10
8 5
6 2
9 10
2 3
1
5
1
6
1
3 5 1
1 2 6
7 10
8 5
6 2
9 10
2 3
1
6
2
1
1

提示

【样例解释 #1 / #2】

两个样例所表示的树的形状在题目描述的图中已经呈现。

第二个样例中各个节点的权值:

x1=7x_1=7y1=10y_1=10
x2=9x_2=9y2=6y_2=6
x3=2x_3=2y3=8y_3=8
x4=1x_4=1y4=2y_4=2
x5=3x_5=3y5=4y_5=4

【数据范围】

Subtask 分值 数据范围及约定
11 1010 q=1,t=0q=1, t=0
22 n1000,t=0n \le 1000, t=0
33 3030 t=0t=0
44 6060 t=1t=1

对于 100%100\% 的数据,1n,q2×1051 \le n,q \le 2 \times 10^5t{0,1}t \in \{0,1\}

【说明】

本题分值按 COCI 原题设置,满分 110110

题目译自 COCI2020-2021 CONTEST #4 T5 Specijacija