题库/Y1144

#Y1144. 与非

    传统题 难度: 普及+ 标签>一本通树链剖分的路径更新查询线段树的建树、点改与区间查询
时间限制2000 ms
内存限制256 MiB
通过率—0 / 0 次提交
题目描述 查看题解 开始编程Alt+E

Y1144 · 与非

退出在线编程模式
普及+ 读懂题意,让每一次思考成为成长。
时间限制2000 ms
内存限制256 MiB
通过率—0 / 0 次提交

题目描述

x  nandy=not  (xandy)x\;nandy=not\;(xandy)

xxyyx  nand  yx\;nand\;y
000011
001111
110011
111100
现在我们只考虑kk位二进制数的nandnand操作。 给定一棵nn个结点的树,每个结点有个点权w[i](0≤w[i]<2^k) 接下来有mm个操作: ①.Replace\;x\;y (1≤x≤n,0≤y<2^k) 将结点 xx 的权值修改为 yy,即 w[x]=yw[x]=y ②.Query\;x\;y (1≤x<y≤n) 记从 xx 到 yy 的路径为S1,S2,...,SLS_1,S_2,...,S_L。 定义函数 $f(i) = \begin{cases}f(i-1)\;nand\;w[S_i]&(i>0)\\0\\ \end{cases}$ 询问发f(L)f(L)的值。

输入

第一行三个整数,n,m,kn,m,k。 第二行nn个整数,初始状态每个结点的权值。 接下来n−1n-1行,每行两个整数a.ba.b,表示aa与bb之间有一条边。 接下来mm行,每行一个操作,格式见题目描述。

输出

对于每个QueryQuery操作输出一行,表示你的答案。

输入样例

3 3 3
2 7 3
1 2
2 3
Query 2 3
Replace 1 3
Query 1 1

输出样例

4
7

提示

【数据规模】 对于30%的数据,1≤n,m≤10001≤n,m≤1000。 对于另外10%的数据,k=1k=1。 对于另外20%的数据,k=2k=2。 对于100%的数据,1≤n,m≤105,1≤k≤321≤n,m≤10^5,1≤k≤32。

查询端点说明

公开样例含Query 1 1,因此同点查询也是合法情况,按路径包含该点一次计算;原操作说明x<y的限制没有覆盖该样例。

评测数据说明

本题使用按题意独立构造、以独立程序核对的训练数据及公开样例,共8个测试点,非原站或官方原始数据。总分100分。