bzoj 3757 苹果树(树上莫队算法)】的更多相关文章

题面链接 /* 代码正确性不保证..(不过交了SPOJ没WA T了最后一个点) 在DFS序做莫队 当一个点不是另一个点的LCA时,需要加上它们LCA的贡献 */ #include <cmath> #include <cstdio> #include <cctype> #include <algorithm> #define gc() getchar() const int N=4e5+5,M=1e5+5; int n,m,size,Enum,H[N],nxt…
2016-05-09 UPD:学习了新的DFS序列分块,然后发现这个东西是战术核导弹?反正比下面的树分块不知道要快到哪里去了 #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 50003; const int M = 100003; void read(int &k) { k = 0; in…
题意: 给出一棵\(n(n \leq 4 \times 10^4)\)个节点的树,每个节点上有个权值,和\(m(m \leq 10^5)\)个询问. 每次询问路径\(u \to v\)上有多少个权值不同的点. 分析: 树分块 首先将树分块,每块的大小为\(\sqrt{n}\)左右. 然后将询问离线处理,按照区间上的莫队算法将询问按块排序. 这里有一道裸的树分块的题目. 树上的路径转移 定义\(S(u,v)\)表示路径\(u \to v\)上的点集,定义\(\bigoplus\)为集合的对称差,类…
树上莫队共有三种写法: 1.按DFS序列分块,和普通莫队类似.常数大,不会被卡. 2.按块状树的方式分块.常数小,会被菊花图卡到O(n). 3.按[BZOJ1086]王室联邦的方式分块.常数小,不会被卡.唯一的缺点是较抽象,一个块可能是不连通的. 权衡一下当然还是写第三种做法,具体看代码. 然后还有一个问题,手动模拟莫队移动左右端点指针的过程,会发现LCA处较难处理,它常常是跟其它点反着的.于是我们每次移指针的时候都忽略LCA,最后询问的时候加上LCA求解答案再减去LCA.再模拟会发现,所有方案…
3339: Rmq Problem 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3339 Description n个数,m次询问l,r.查询区间mex是什么. Input Output Sample Input 7 5 0 2 1 0 1 3 2 1 3 2 3 1 4 3 6 2 7 Sample Output 3 0 3 2 4 Hint 题意 题解: 莫队算法水题 直接暴力搞就行了 代码 #include<bits/stdc…
[题意]给定长度为n的排列,m次询问区间[L,R]的最长连续值域.n<=50000. [算法]莫队算法 [题解]考虑莫队维护增加一个数的信息:设up[x]表示数值x往上延伸的最大长度,down[x]表示数值x往下延伸的最大长度. 增加一个数x时,up[x]=up[x+1]+1,down[x]=down[x-1]+1.令t=up[x]+down[x]+1,可以用于更新答案. 同时,增加x后会影响到x所在连续区间最大数和最小数,中间的数字不会影响后面的答案(因为只考虑加数,中间的数字虽然改变但不会被…
[题目链接] http://uoj.ac/problem/58 [题意] 有一棵树,结点有自己的颜色,若干询问:u,v路径上的获益,并提供修改颜色的操作. 其中获益定义为Vc*W1+Vc*W2+…+Vc*Wcnt,cnt为经过颜色c的次数. [思路] 如果没有修改操作就和 苹果树 这道题一样了. 加上修改操作,我们可以对每一个修改操作打上一个时间戳,并记录每一个查询最后修改的时间戳.这样在莫队“区间移动”的时候,只需要根据时间戳进行时光逆流或顺流,即加上现在时间内前一个时间没有的修改或消除现在时…
[题意] 有若干个询问,询问路径u,v上的颜色总数,另外有要求a,b,意为将a颜色看作b颜色. [思路] vfk真是神系列233. Quote: 用S(v, u)代表 v到u的路径上的结点的集合. 用root来代表根结点,用lca(v, u)来代表v.u的最近公共祖先. 那么 S(v, u) = S(root, v) xor S(root, u) xor lca(v, u) 其中xor是集合的对称差. 简单来说就是节点出现两次消掉. lca很讨厌,于是再定义 T(v, u) = S(root,…
题意与分析 题意是这样的,给定一颗节点有权值的树,然后给若干个询问,每次询问让你找出一条链上有多少个不同权值. 写这题之前要参看我的三个blog:Codeforces Round #326 Div. 2 E(树上利用倍增求LCA).Codeforces Round #340 Div. 2 E(朴素莫队)和BZOJ-1086(树的分块),然后再看这几个Blog-- 参考A:https://blog.sengxian.com/algorithms/mo-s-algorithm 参考B:https:/…
挺好的一道题目,怎么就没有版权了呢?大数据拍过了,精神AC.... 发现几种颜色这性质比较垃圾,不可加,莫队硬上. %了一发popoqqq大神的博客, 看了一波VFK关于糖果公园的博客, 又找了wjmzbmr的博客看了看块状树. 感觉看了很多,明白了: 还TM是抄代码舒服 同序列上的莫队算法,只需要分块,排序之后进行统计,但是要注意更新状态的方法. 根据VFK所说的,为了方便操作,(否则直接暴力维护会有四种情况需要讨论) 我们统计时,把两点间的lca统一去掉,然后类似方法去维护.查询答案时加上.…