Qtree3】的更多相关文章

终于来到了Qtree3, 其实这是Qtree系列中最简单的一道题,并不需要线段树, 只要树链剖分的一点思想就吼了. 对于树链剖分剖出来的每一根重链,在重链上维护一个Set就好了, 每一个Set里存的都是重链中的黑点, 深度就是关键字. 考虑每一种操作 0 : 改变颜色 在他所在的重链上插入一个黑点或者earse掉 1 : 查询 就像树链剖分一样, 一直往上跳重链头然后更新答案即可 代码较短 #include <bits/stdc++.h> #define maxn 101000 #define…
[题目分析] QTREE2,一看是倍增算法,太懒了,不写了.( ̄_, ̄ ) QTREE3,树链剖分可以做,发现链上的问题LCT也很好做. 要是子树问题貌似可以DFS序. 然后就成LCT模板题了. 考前背板模式开启了. [代码] #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define maxn 10000…
前言 显然qtree系列都是树链剖分辣 发现自己没有专门整理过树链剖分耶 辣么就把这篇博客魔改成树链剖分好辣(貌似除了树剖也没什么好写的) 正文 废话了辣么多终于开始了 一.树剖怎么写鸭 二.树剖有什么用鸭 三.qtree3题解 树剖怎么写鸭 树剖,顾名思义就是把树 剖成一条一条的东西,然后把一棵树搞成一个序列. 咋剖? 对于树上的每个节点,我们定义它的儿子中,有着最大子树的儿子就是重儿子(因为它画出来显得比较重),然后我们从根节点开始,一直走重儿子,就走出来一条重链.那些不在重链上的边怎么办呢…
Query on a tree again! 给出一棵树,树节点的颜色初始时为白色,有两种操作: 0.把节点x的颜色置反(黑变白,白变黑). 1.询问节点1到节点x的路径上第一个黑色节点的编号. 分析: 先树链剖分,线段树节点维护深度最浅的节点编号. 注意到,如果以节点1为树根时,显然每条重链在一个区间,并且区间的左端会出现在深度浅的地方.所以每次查找时发现左区间有的话,直接更新答案. 9929151 2013-08-28 10:45:55 Query on a tree again! 100…
外话:最近洛谷加了好多好题啊...原题入口 这题好像是SPOJ的题,挺不错的.看没有题解还是来一篇... 题意: 很明显吧.. 题解: 我的做法十分的暴力:树链剖分(伪)+线段树+\(set\)... 首先,我们可以考虑每次修改一个点的颜色的影响. 易知,翻转一个点颜色,只会对于他的子树产生影响,对于别的点就毫无意义了. 然后,只要学过一点树链剖分的就知道,我们可以将整棵树按它的\(dfs\)序进行标号, 每个点的序号就是\(dfn\), 然后记下它的子树大小\(size\),然后对于每个点\(…
思路 可以树剖可以LCT,树剖就是每个重链开一个SET维护一下黑点的深度 非常不优美 使用LCT,在splay上二分找出需要的节点即可 代码 #include <cstdio> #include <algorithm> #include <cstring> using namespace std; struct Node{ int son[2],sum,inv,fa,val; }SPT[100100]; int n,q; bool isrl(int o){ return…
外话:最近洛谷加了好多好题啊...原题入口 这题好像是SPOJ的题,挺不错的.看没有题解还是来一篇... 题意 很易懂吧.. 题解 我的做法十分的暴力:树链剖分(伪)+线段树+ std :: set ... 首先,我们可以考虑每次修改一个点的颜色的影响. 易知,翻转一个点颜色,只会对于他的子树产生影响,对于别的点就毫无意义了. 然后,只要学过一点树链剖分的就知道,我们可以将整棵树按它的\(dfs\)序进行标号, 每个点的序号就是\(dfn\), 然后记下它的子树大小\(size\),然后对于每个…
Qtree系列第三题 我是题面 读完题大概不难判断是一道树剖的题 这道题的关键是记录两种状态,以及黑点的序号(不是编号) 线段树啊当然 定义两个变量v,f,v表示距离根节点最近的黑点,默认-1,f则表示区间内是否含有黑点,有为1,无为0 那么,怎么才能取当前路径距离根节点最近的黑点的呢?线段树更新时,优先取左子区间的黑点,后取右子区间,更新答案时,优先取后出现的答案 那么直接看程序吧 #include<algorithm> #include<iostream> #include&l…
题目链接 树剖练手题,想复习下树剖. 第一次提交\(T\)成QQC 看我 ??? 看了数据范围的确挺恶心的,我的复杂度是\(O(Mlog^2N)\)的,数据范围有三段 For 1/3 of the test cases, N=5000, Q=400000. For 1/3 of the test cases, N=10000, Q=300000. For 1/3 of the test cases, N=100000, Q=100000. 很极限就对了.难道是我常数太大了?那也不至于只对\(3\…
Description 给出N个点的一棵树(N-1条边),节点有白有黑,初始全为白 有两种操作: 0 i : 改变某点的颜色(原来是黑的变白,原来是白的变黑) 1 v : 询问1到v的路径上的第一个黑点,若无,输出-1 Input 第一行 N,Q,表示N个点和Q个操作 第二行到第N行N-1条无向边 再之后Q行,每行一个操作"0 i" 或者"1 v" (1 ≤ i, v ≤ N). Output 对每个1 v操作输出结果 很明显.树上区间问题,我们考虑树链剖分. 单点…