问题 B: Mon2tr

内存限制:230 MB 时间限制:14 S
题面:传统 评测方式:文本比较 上传者:
提交:4 通过:3

题目描述

请注意本题特殊的空间限制。

“生命野蛮蓬勃,大地千变万化。人造机器轰鸣运作,源石能的光辉照亮了暗影。人们挣扎在暗处,向往光明,在辉煌时轻视阴影,如是反复。”

给定一棵由编号为 1,2,3,⋯,n1,2,3,,n 的点构成的有根树。记 didi 表示编号为 ii1≤i≤n1in)的点到树根的唯一简单路径上的 点数(对于树根本身,这个值为 11)。

现在有 qq 次询问。第 ii1≤i≤q1iq)次询问给定整数 xi,yi,zixi,yi,zi。对于整数 jj1≤j≤n1jn),定义 vj=dLCA(j,xi)vj=dLCA(j,xi),其中 LCA(u,v)LCA(u,v) 表示编号分别为 u,vu,v 的点的最近公共祖先的编号。

对于第 ii1≤i≤q1iq)次询问,求满足 j−vj≤yi≤j≤j+vj≤zijvjyijj+vjzi 的整数 jj1≤j≤n1jn)中,j+vjj+vj 的最大值。如果 yi>ziyi>zi 或者不存在符合条件的整数,答案为 00

输入格式

本题包含多组测试数据。

来自 Kal'tsit 的温馨提示:本题输入输出量较大,请使用合适的输入输出方式。你可以使用下面链接中给出的输入输出模板。同时请选手注意代码的时间和空间常数消耗,常数过大,例如滥用 C++ STL 容器的代码不保证能够通过。

https://www.luogu.me/paste/y4lm88ha

首先在第一行输入一个整数 TT1≤T≤3.5×1051T3.5×105)表示测试数据组数。

对于每一组测试数据,输入包含 q+2q+2 行。

第一行包含两个整数 n,qn,q1≤n≤8×104,1≤q≤1051n8×104,1q1051≤∑n≤3.5×105,1≤∑q≤5×1051n3.5×105,1q5×105),分别表示树上点的数量和询问的次数。

第二行包含 nn 个整数 fa1,fa2,fa3,⋯,fanfa1,fa2,fa3,,fan0≤fa1,fa2,fa3,⋯,fan≤n0fa1,fa2,fa3,,fann)表示每个点的父亲编号。若 fai=0fai=01≤i≤n1in)则表示编号为 ii 的点为树根。

接下来 qq 行,第 i+2i+21≤i≤q1iq)行包含三个整数 xi′,yi′,zi′xi,yi,zi0≤xi′,yi′,zi′<1090xi,yi,zi<109),表示与第 ii 次询问的参数有关的三个数。

对于第 ii1≤i≤q1iq)次询问,你需要通过以下操作得到 xi,yi,zixi,yi,zi

  1. 记 lanslans 表示第 i−1i1 次询问的答案。若 i=1i=1,则令 lans=0lans=0
  2. xi=[(xi′+lans)modn]+1xi=[(xi+lans)modn]+1yi=[(yi′+lans)mod(2n−1)]−(n−1)yi=[(yi+lans)mod(2n1)](n1)zi=[(zi′+lans)mod(2n−1)]+1zi=[(zi+lans)mod(2n1)]+1,其中 modmod 表示取模,例如 3mod2=1,(−7)mod3=23mod2=1,(7)mod3=2

保证输入的是一棵有根树。

输出格式

对于每一组测试数据,输出包含 qq 行。

第 ii1≤i≤q1iq)行包含一个整数表示第 ii 次询问的答案。

输入样例 复制

5
5 5
2 3 4 5 0 
3 428538 54277
3 417360 4017
3 892741 445551
4 964351 433610
4 472928 556419
5 5
2 0 5 3 1 
2 145658 137247
5 616008 743457
3 236233 341788
5 338103 325826
2 722091 315410
5 5
5 0 4 2 3 
1 904355 654626
2 418807 822821
4 45452 454729
5 4372 624796
3 138698 133893
5 5
2 0 1 5 2 
1 698219 122911
5 682494 893039
3 293682 893575
1 804585 301494
5 634397 319946
15 15
5 4 4 9 3 7 9 15 0 3 12 6 9 3 9 
2 305062 35660
3 843437 749658
11 170333 369270
1 311572 416623
8 860851 743360
4 16581 926304
5 369493 824555
6 517688 889937
8 710314 148564
7 21922 973381
13 790964 3688
7 989786 105365
1 359041 27784
6 623431 2814
6 678899 377943

输出样例 复制

3
6
0
0
3
0
3
2
0
3
0
0
5
0
0
6
0
0
0
5
0
0
4
0
3
13
7
8
0
17
0
4
0
0
0

分类标签