qtree4】的更多相关文章

题目链接 洛谷 SPOJ BZOJ1095(简化版) 将每次Solve的重心root连起来,会形成一个深度为logn的树,就叫它点分树吧.. 我们对每个root维护两个东西: 它管辖的子树中所有白点到它上一层(点分树中的fa[x])的距离(记这个为h1),以及它的所有子树的h1的最大值(这样就有过fa[x]的答案了)(记这个为h2) 要能随时插入与删除距离,同时要取最值,用堆维护即可.删除用另外一个堆实现. 需要有一个堆Ans统计答案,由每个root的h2去更新Ans. 修改时一个点只会影响其所…
题目链接 luogu P4115 Qtree4 题解 动态点分治,和上一题一样.同样三个堆.就是带权,用边权替换深度就好 为什么要单独写这个题解呢,因为我卡常卡了一天....据说树剖比rmq快? 在第24次AC 同样也有更有做法 代码 #include<queue> #include<cstdio> #include<cctype> #include<algorithm> /*char ch; char buf[100000],*p1 = buf,*p2 =…
我是萌萌的传送门 我是另一个萌萌的传送门 一道树分治……简直恶心死了……我在调代码的时候只想说:我*************************************************…… 昨天听ztc讲了讲树分治,下午心血来潮想写QTREE4……写的是边分治,然后调了一晚上没调出来,后来发现换一个点作根建树就A了(COGS数据弱……)……然而交到vjudge上还是WA,早上接着调结果还调不出来,一怒之下弃坑去写比较简单的动态树分治,感觉点分治挺好写嘛……然后就换用点分治重写QTRE…
意识到一点:在进行点分治时,每一个点都会作为某一级重心出现,且任意一点只作为重心恰好一次.因此原树上任意一个节点都会出现在点分树上,且是恰好一次 https://www.cnblogs.com/zzqsblog/p/6393023.html 对比http://www.cnblogs.com/hehe54321/p/8570320.html的普通点分程序,"到分治树上这个点父亲的距离"相当于solve(u)时各个cal函数计算出的值对ans的总贡献,只不过改成了动态维护这个值. 普通点分…
题目链接 这个题已经处于花式tle了,改版后的spoj更慢了.. tle的话就多交几把... #include <iostream> #include <fstream> #include <string> #include <time.h> #include <vector> #include <map> #include <queue> #include <algorithm> #include <s…
题目:https://www.luogu.org/problemnew/show/P4115 论文:https://wenku.baidu.com/view/1bc2e4ea172ded630b1cb602.html 重链剖分,分别用线段树维护每条重链.线段树叶子的信息是该点轻孩子的信息:线段树区间的信息是考虑重链的一个区间以及附带的轻孩子们的信息. 修改一个点,改它所在的重链的信息.祖先的每条重链都有一个点的 “轻孩子信息” 改变了,改一下那个位置的值,更新它的线段树,再用该重链的信息作为轻孩…
题目描述 给出一棵边带权的节点数量为n的树,初始树上所有节点都是白色.有两种操作: C x,改变节点x的颜色,即白变黑,黑变白 A,询问树中最远的两个白色节点的距离,这两个白色节点可以重合(此时距离为0). N (N <= 100000) Q <= 200000 时限1s 题解 如果没有修改的话,直接点分治,记录子树最深的白点即可. 但是有修改. 发现,点分治的递归层数是O(logn)的 而且这个递归的联通块的根形成一个树形结构.不妨叫点分树. 我们的答案是在所有递归出来的块里ans取max…
具体看$qzc$论文吧......陈年老物了...... 主要注意每个链头一棵线段树而不是一棵全局线段树 修改操作写完就是正确的,反而是初始化调了好一会...... 跑的还是很快的,有些地方没优化常数也还可以接受 在$luogu$上把$Toptree$给卡下去了,现居$rank1$...... 代码的话....借鉴一下思想就行了 实现就没有必要有些地方做得一样了 #include <queue> #include <vector> #include <cstdio> #…
题意翻译 你被给定一棵n个点的带边权的树(边权可以为负),点从1到n编号.每个点可能有两种颜色:黑或白.我们定义dist(a,b)为点a至点b路径上的权值之和. 一开始所有的点都是白色的. 要求作以下操作: C a 将点a的颜色反转(黑变白,白变黑) A 询问dist(a,b)的最大值.a,b点都必须为白色(a与b可以相同),显然如果树上仍存在白点,查询得到的值一定是个非负数. 特别地,如果作'A'操作时树上没有白点,输出"They have disappeared.". 题解 一道神…
You are given a tree (an acyclic undirected connected graph) with N nodes, and nodes numbered 1,2,3...,N. Each edge has an integer value assigned to it(note that the value can be negative). Each node has a color, white or black. We define dist(a, b)…