第十四届蓝桥杯省赛 Python B 组 I 题——异或和(AC)

1. 异或和

  • 前置知识点:树状数组,线段树,DFS 序。

1. 问题描述

给一棵含有 n n n 个结点的有根树,根结点为 1 1 1,编号为 i i i 的点有点权 a i a_i ai i ∈ [ 1 , n ] i \in [1,n] i[1,n])。现在有两种操作,格式如下:

  • 1   x   y 1\ x\ y 1 x y:该操作表示将点 x x x 的点权改为 y y y
  • 2   x 2\ x 2 x:该操作表示查询以结点 x x x 为根的子树内的所有点的点权的异或和。

现有长度为 m m m 的操作序列,请对于每个第二类操作给出正确的结果。

2 .输入格式

输入的第一行包含两个正整数 n , m n,m n,m,用一个空格分隔。

第二行包含 n n n 个整数 a 1 , a 2 , … , a n a_1,a_2,\ldots,a_n a1,a2,,an,相邻整数之间使用一个空格分隔。

接下来 n − 1 n-1 n1 行,每行包含两个正整数 u i , v i u_i,v_i ui,vi,表示结点 u i u_i ui v i v_i vi 之间有一条边。

接下来 m m m 行,每行包含一个操作。

3. 输出格式

输出若干行,每行对应一个查询操作的答案。

4. 样例输入

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

5. 样例输出

4
5
6

6. 评测用例规模与约定

对于 30 30 30% 的评测用例, n , m ≤ 1000 n,m \leq 1000 n,m1000

对于所有评测用例, 1 ≤ n , m ≤ 100000 1 \leq n,m \leq 100000 1n,m100000 0 ≤ a i , y ≤ 100000 0 \leq a_i,y \leq 100000 0a

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执 梗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值