最近在学树剖,看到了这题就做了 [ZJOI2008]树的统计 思路 从题面可以知道,这题是树剖题(要求的和模板没什么区别呀喂 就是在普通的树剖上加了一个最大值 所以可以知道就是树剖+特殊的线段树 线段树要可以求区间最大值和区间和 那么就很好做了,基本上就是到树剖模板题 只需要给线段树加个最大值就行了 实现 给线段树添加一个max,记录区间最大值 可以得到线段树结构体如下 struct Tree { int max; int l,r; int lazy; int val; }t[MAXN<<];…
题目链接:https://www.luogu.org/problemnew/show/P2590 我想学树剖QAQ #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 31000; int fa[maxn], dep[maxn], size[maxn], son[maxn], to…
题目链接:https://www.luogu.org/problem/P2590 树链剖分模板题. 剖分过程要用到如下7个值: fa[u]:u的父节点编号: dep[u]:u的深度: size[u]:u为根的子树中节点总数: son[u]:u的重儿子: top[u]:u所在的重链的顶部节点: seg[u]:u在线段树中的位置: rev[u]:seg的倒置,即rev[seg[u]] == u. 然后套线段树模板实现区间最值.区间和,及单点更新操作. 实现代码如下: #include <bits/s…
链剖裸题...你值得一做~ 用线段树多维护一个mx,少写一个tag #include<cstdio> #include<iostream> #define ll long long #define R register ll #define ls (tr<<1) #define rs (tr<<1|1) using namespace std; ; inline ll g() { R ret=,fix=; register :fix; +(ch^); whi…
题目描述 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w. 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:从点u到点v的路径上的节点包括u和v本身 输入输出格式 输入格式: 输入文件的第一行为一个整数n,表示节点的个数. 接下来n – 1行,每行2个整数a和b,表示节点a和节点b之…
Luogu 2590 [ZJOI2008]树的统计 / HYSBZ 1036 [ZJOI2008]树的统计Count (树链剖分,LCA,线段树) Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:从点u到点v的路…
P2590 [ZJOI2008]树的统计 虽然是入门树剖模板 但是我终于1A了(大哭) 懒得写啥了(逃 #include<iostream> #include<cstdio> #include<cstring> using namespace std; inline int Max(int a,int b){return a>b?a:b;} inline void Swap(int &a,int &b){a^=b^=a^=b;} #define N…
[Luogu 2590] ZJOI2008 树的统计 裸树剖不解释. 比板子还简单. #include <algorithm> #include <cstdio> #include <cstring> using std::max; using std::swap; const int MAXN=30010,MAXM=60010; int n,q; class HLD { public: HLD(void) { num=cnt=0; memset(vis,0,sizeo…
P2590 [ZJOI2008]树的统计 题目描述 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w. 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:从点u到点v的路径上的节点包括u和v本身 输入输出格式 输入格式: 输入文件的第一行为一个整数n,表示节点的个数. 接下来n – 1行…
P2590 [ZJOI2008]树的统计 I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 (博主)神蒟本蒻,又A了一道树链剖分的模板题,还是太颓废了... 调了我一个小时... dfs+线段树维护区间和和最大值. 自带大常常数 #include<iostream> #include<cstdio> #include<cmath>…