AT_kupc2018_m.整数と根付き木

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

整数与有根树

现有一棵有根树 TT,由顶点 11 至 NN 编号而成。最初的根是 11 号点。
树 TT 上有 N−1N-1 条边,第 ii 条边连接了顶点 aia_i 和 bib_i。
每个顶点 vv 都有自己的整数数组 AvA_v。最初它们都是空的。
这棵有根树 TT 被查询了 QQ 次。共有 33 种不同的查询操作,每种操作如下:

  • 1 v x k - 为顶点 vv 的子树中的任意顶点(包括顶点 vv)uu 添加 kk 值 xx 至 AuA_u。
  • 2 v y z - 求顶点 vv 处的数组 AvA_v 中满足 valval xorxor yy ≤\leq zz 且值为 valval 的元素个数。其中 ss xorxor tt 是指 ss 和 tt 的位排中或。
  • 3 v - 将根节点改为顶点 vv。

您必须编写一个程序来依次处理这些查询。

输入格式

输入通过标准输入,格式如下。

NN
a1a_1 b1b_1
a2a_2 b2b_2
.
.
aN−1a_{N-1} bN−1b_{N-1}
QQ
Query1Query_1
Query2Query_2
.
.
QueryQQuery_Q

  • QueryiQuery_i 以1 v x k
    ,2 v y z或3 v的形式逐行输入。

输出格式

对于形式为2 v y z的查询,按给定的顺序输出答案。

样例解释

样例1:

  • 11 11 第二次查询将 11 的值 11 添加到 A1A_1 、 A2A_2 、 A3A_3 和 A4A_4 中。
  • 22 第二次查询将 {800266674} 的值 11 添加到 A2A_2 中。
  • 33 33 第二次查询将 33 值 11 分别添加到 A3A_3 和 A4A_4 中。
  • 44 44 第二次查询将顶点 11 的根更改为顶点 44 。
  • 55 55 第二次查询的结果是 11 ,即低于 44 的值的个数,因为 A1={1}A_1 = \{1\} 和 11 xorxor 0=10 = 1 的值都低于 44 。
  • 66 第二个查询输出 22 ,即 A2={1,2}A_2 = \{1,2\} 和 11 xorxor 1=01 = 0 和 22 xorxor 1=31 = 3 ,所以 33 或更少 77
  • 77 第二次查询输出 22 ,这是低于 22 的数值个数,因为 A4={1,3}A_4 = \{1,3\} 、 11 xorxor 3=23 = 2 、 33 xorxor 3=03 = 0 。 22
  • 88 第二次查询将 11 值 33 添加到 A1A_1 、 A2A_2 和 A3A_3 。
  • 第 99 次查询将 A1A_1 和 A2A_2 以及 A3A_3 和 A4A_4 的值 44 添加到 11 中。
  • 第二个查询 1010 通过 11 将 11 的值添加到 A1A_1 和 A2A_2 中。
  • 1111 第二次查询通过 11 将 22 的值添加到 A2A_2 中。
  • 1212 A1={1,3,4,1}A_1 = \{1,3,4,1\} 查询添加了 11 xorxor 0=10 = 1 、 33 xorxor 0=30 = 3 、 44 xorxor 0=40 = 4 、 44 xorxor 0=40 = 4 、 44 44 xorxor 0=40 = 4 。 11 xorxor 0=10 = 1 ,因此输出 44 ,即低于 44 的数值个数。
  • 第 1313 次查询会产生 A2={1,2,3,4,1,2}A_2 = \{1,2,3,4,1,2\} 和 11 xorxor 1=01 = 0 , 22 xorxor 1=31 = 3 , 33 xorxor 1=21 = 2 , 44 xorxor 1=51 = 5 , 11 xorxor 1=01 = 0 , 22 xorxor 1=31 = 3 所以输出 55 ,这是低于 33 的值的个数。 55
  • 1414 ,即 A4={1,3,4}A_4 = \{1,3,4\} 和 11 xorxor 3=23 = 2 , 33 xorxor 3=03 = 0 , 44 xorxor 3=73 = 7 , 所以 55 是 33 55 下面的数值。 22 ,即低于 22 的数值个数。

样例3:

输出不一定适合 3232 位整数类型。

输入输出样例

  • 输入#1

    4
    1 2
    1 3
    3 4
    14
    1 1 1 1
    1 2 2 1
    1 3 3 1
    2 1 0 4
    2 2 1 3
    2 4 3 2
    3 4
    1 3 3 1
    1 4 4 1
    1 1 1 1
    1 2 2 1
    2 1 0 4
    2 2 1 3
    2 4 3 2

    输出#1

    1
    2
    2
    4
    5
    2
  • 输入#2

    1
    11
    1 1 4 1
    1 1 14 2
    1 1 10 4
    1 1 8 8
    1 1 12 16
    1 1 2 32
    1 1 6 64
    1 1 0 128
    2 1 0 10
    2 1 10 10
    2 1 8 10

    输出#2

    237
    190
    190
  • 输入#3

    1
    11
    1 1 0 1000000000
    1 1 0 1000000000
    1 1 0 1000000000
    1 1 0 1000000000
    1 1 0 1000000000
    1 1 0 1000000000
    1 1 0 1000000000
    1 1 0 1000000000
    1 1 0 1000000000
    1 1 0 1000000000
    2 1 0 2

    输出#3

    10000000000
  • 输入#4

    1
    2
    1 1 1 123
    2 1 0 1073741823

    输出#4

    123

说明/提示

  • 所有输入均为整数。
  • 1≤N≤1.4×1051 \leq N \leq 1.4 \times 10^5
  • 1≤Q≤1.4×1051 \leq Q \leq 1.4 \times 10^5
  • 1≤ai,bi≤N1 \leq a_i,b_i \leq N
  • 1≤v≤N1 \leq v \leq N
  • 0≤x,y,z<2300 \leq x,y,z < 2^{30}
  • 1≤k≤1091 \leq k \leq 10^9
  • 给定图形是一棵树。

输入解题思路,AI测评打分。不知道怎么写?

首页