题目:单边修改,树链查询。这题是边权,不是点权,不过也可以看作是点权。然后其实就和BZOJ2819一样。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 111111 6 struct Edge...
题目:单点修改、树链查询。可以直接用树链剖分做。。修改是O(QlogN),查询是O(QlogNlogN),Q=N=500000;听说会超时。。这题也可以用DFS序来做。先不看修改,单单查询:可以求出每个点到根的xor值,那么对任意两点的查询就等于xor(u)^xor(v)^val(lca(u,v))...
分类:
其他好文 时间:
2015-10-17 10:38:03
阅读次数:
208
考虑树状数组区间修改(只对其子树的答案有影响)点查询,每个点记录的是它到根路径上的权值异或和。答案时query(L)^query(R)^a[lca]。这种方法在支持区间加法、减法的树上询问的时候可以避免树链剖分。可能爆栈,考虑手动开栈。(诶诶Tarjan预处理lca的时候怎么没手动开栈?不要在意^_...
分类:
编程语言 时间:
2015-03-09 22:26:08
阅读次数:
216
做法。。。就不讲了,参见hzwer的blog好了我们发现只要维护树上点到根的xor值就可以了,于是先搞个dfs序,然后用树状数组维护即可。反正各种调不出。。。各种WA后来发现又是LCA的姿势不对= =,今天不是刚写过noip题嘛T T蒟蒻还是滚去挖矿算了、、、 1 /***************....
分类:
其他好文 时间:
2014-12-14 00:31:57
阅读次数:
311
题目大意:两个小人在树上玩Nim游戏,问有没有必胜策略。
思路:尼姆游戏:如果所有石子的异或值为0就是必败局面。异或有如下性质:x ^ y ^ z = x ^ (y ^ z),所以就可以进行树链剖分了。题目中还好心提醒有30%的点会使dfs爆栈。。第一次写不用dfs的树链剖分,扒的别人的代码,有些丑陋。
CODE:
#include
#include
#inclu...
分类:
其他好文 时间:
2014-09-28 10:35:41
阅读次数:
167
题意:给定一棵树,每个节点是一堆石子,给定两种操作:
1.改变x号节点的石子数量
2.用从x到y的路径上的所有堆石子玩一次Nim游戏,询问是否有必胜策略
Nim游戏有必胜策略的充要条件是所有堆的石子数异或起来不为零
这题首先一看就是树链剖分 然后题目很善良地告诉我们深搜会爆栈 于是我们可以选择广搜版的树链剖分
BFS序从左到右是深搜,从右到左是回溯,一遍BFS就够
单点修改区间查询还可...
分类:
其他好文 时间:
2014-09-02 10:34:04
阅读次数:
334