最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

信息学奥赛题库- 与非

C++ 少儿编程 1239浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

【题目描述】

$x;nandy=not;(xandy)$

$x$ $y$ $x;nand;y$
$0$ $0$ $1$
$0$ $1$ $1$
$1$ $0$ $1$
$1$ $1$ $0$

现在我们只考虑$k$位二进制数的$nand$操作。

给定一棵$n$个结点的树,每个结点有个点权$w[i](0≤w[i]<2^k)$

接下来有$m$个操作:

①.$Replace;x;y (1≤x≤n,0≤y<2^k)$

将结点 $x$ 的权值修改为 $y$,即 $w[x]=y$

②.$Query;x;y (1≤x<y≤n)$

记从 $x$ 到 $y$ 的路径为$S_1,S_2,…,S_L$。

定义函数

$f(i) = begin{cases}f(i-1);nand;w[S_i]&(i>0)\0\ end{cases}$

询问发$f(L)$的值。

【输入】

第一行三个整数,$n,m,k$。

第二行$n$个整数,初始状态每个结点的权值。

接下来$n-1$行,每行两个整数$a.b$,表示$a$与$b$之间有一条边。

接下来$m$行,每行一个操作,格式见题目描述。

【输出】

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

【输入样例】

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≤1000$。

对于另外10%的数据,$k=1$。

对于另外20%的数据,$k=2$。

对于100%的数据,$1≤n,m≤10^5,1≤k≤32$。

您必须 登录 才能发表评论!