树链剖分模板

  • 区间,边权

描述

松鼠爸爸为了让松鼠宝宝更熟悉地熟悉采松果的流程,为其定制了一颗“树”,树上有n个点,n-1条边(无环),每条边上都有一定数量的松果。松鼠爸爸为了让松鼠宝宝得到更多的松果,有m次操作,每次操作给定两个点x,y和一个add,在x点到y点的简单路径上所有的边都增加add个松果。然后松鼠宝宝会去采集q次松果(每次采集后边上的松果数量不会减少),q次采集会给定x,y两个点,采集x点到y点路径上的边上的所有松果,现询问q次采集每次采集会获得多少松果。

输入描述:

第一行读入三个数n,m,q(分别代表树上的点数,操作次数,询问次数)

接下来n-1行读入x,y, z(代表x点和y点之间有边且有z个松果)

接下来m行读入x,y,z(分别代表x点,y点,和增加的松果数量)

接下来q行读入x,y(分别代表x点,y点)

n <=1e5

m <=1e5

q <=1e5

1 <= x, y <= n

0 <= z <= 1e5

输出描述:

输出q行代表每次采集所采集到的松果的数量和

示例1

输入

复制
7 3 3
1 2 1
1 3 2
2 4 1
2 5 2
3 6 1
3 7 2
2 3 1
1 2 1
2 3 0
2 3
4 7
1 1

输出

复制
6
9
0
  • 点权

一棵树上有n个节点,编号分别为1n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作:

  1. CHANGE u t,把结点u的权值改为t
  2. QMAX u v,询问从点u到点v的路径上的节点的最大权值
  3. QSUM u v, 询问从点u到点v的路径上的节点的权值和。注意:从点u到点v的路径上的节点包括uv本身。

输入格式

输入的第一行为一个整数n,表示节点的个数。接下来n1行,每行2个整数ab,表示节点a和节点b之间有一条边相连。

接下来n行,每行一个整数,第i行的整数wi表示节点i的权值。接下来一行,为一个整数q,表示操作的总数。

接下来q行,每行一个操作,以CHANGE u t或者QMAX u v或者QSUM u v的形式给出。

保证1n3×104,0q2×104,中途操作中保证每个节点的权值w3×1043×104之间。

输出格式

对于每个QMAX或者QSUM的操作,每行输出一个整数表示要求输出的结果。

样例输入

4
1 2
2 3
4 1
4 2 1 3
12
QMAX 3 4
QMAX 3 3
QMAX 3 2
QMAX 2 3
QSUM 3 4
QSUM 2 1
CHANGE 1 5
QMAX 3 4
CHANGE 3 6
QMAX 3 4
QMAX 2 4
QSUM 3 4

样例输出

4
1
2
2
10
6
5
6
5
16

  

 
posted @   清初  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示