https://www.lydsy.com/JudgeOnline/problem.php?id=5338 现在有一颗以1为根节点的由n个节点组成的树,树上每个节点上都有一个权值vi. 现在有Q 次操作,操作如下: 1 x y 查询节点x的子树中与y异或结果的最大值 2 x y z 查询路径x到y上点与z异或结果最大值 HDU4757:Tree——题解 别的不想多说了,出原题不怕被骂吗…… #include<cmath> #include<queue> #includ…
题目描述 现在有一颗以1为根节点的由n个节点组成的树,树上每个节点上都有一个权值vi. 现在有Q 次操作,操作如下: 1 x y 查询节点x的子树中与y异或结果的最大值 2 x y z 查询路径x到y上点与z异或结果最大值 输入 第一行是两个数字n, Q; 第二行是n个数字用空格隔开,第i个数字vi表示点i上的权值 接下来n-1行,每行两个数,x,y,表示节点x与y之间有边 接下来Q行,每一行为一个查询,格式如上所述. 1 < n, Q ≤ 100000 ,查询1中的y ≤ 2…
题目分析: 很无聊的一道题目.首先区间内单点对应异或值的询问容易想到trie树.由于题目在树上进行,case1将路径分成两段,然后dfs的时候顺便可持久化trie树做询问.case2维护dfs序,对dfs序建可持久化的trie树.这样做的空间复杂度是O(nw),时间复杂度是O(nw). 代码: #include<bits/stdc++.h> using namespace std; ; int n,q; int v[maxn]; vector<int> g[maxn]; vecto…
Description: 现在有一颗以1为根节点的由n个节点组成的树,树上每个节点上都有一个权值v 现在有Q次操作,操作如下: 1.1 x y :查询节点x的子树中与y异或结果的最大值 2.2 x y z :查询路径x到y上点与z异或结果最大值 Hint: \(n,q<=10^5\) Solution: 水题,按dfs序建主席树解决询问1,树上主席树解决询问2 #include<bits/stdc++.h> using namespace std; const int mxm=1e5+…