[Ynoi2011] ODT
题目背景
【先咕咕咕
题目描述
给你一棵树,边权为 $1$,有点权。
需要支持两个操作:
- `1 x y z`:表示把树上 $x$ 到 $y$ 这条简单路径的所有点点权都加上 $z$。
- `2 x y`:表示查询与点 $x$ 距离**小于等于** $1$ 的所有点里面的第 $y$ 小点权。
输入输出格式
输入格式
第一行两个整数 $n,m$。
第二行 $n$ 个整数表示每个点的点权。
之后 $n-1$ 行,每行两个整数 $x,y$ 表示 $x$ 和 $y$ 之间连有一条边。
之后 $m$ 行,每行为 `1 x y z` 或者 `2 x y` 形式,意义如上述。
输出格式
对每个 2 操作输出一行,每行一个整数表示答案。
数据保证每次询问都存在答案。
输入输出样例
输入样例 #1
5 5
3 4 3 1 3
1 2
1 3
2 4
3 5
2 1 3
2 1 1
1 1 1 1
2 1 3
1 4 1 1
输出样例 #1
4
3
4
说明
Idea:nzhtl1477,
Solution:nzhtl1477( $O( n\log^2n/ \log\log n )$ solution ),negiizhao( $O( n\log n\log\log\log n )$ solution ),ccz181078( $O( n\log n )$ solution ),
Code:nzhtl1477( $O( n\log^2 n/ \log\log n )$ code )
Data:nzhtl1477( partially uploaded )
subtask 1:$20\%$ $n,m\leq 1000$。
subtask 2:$10\%$ 树为一条链。
subtask 3:$20\%$ $n,m\leq 10^5$。
subtask 4:$30\%$ $n,m\leq 4\times 10^5$。
subtask 5:$20\%$ $n,m\leq 10^6$。
对于 $100\%$ 的数据,$1\leq n,m\leq 10^6$,$0\leq $ 每次加的数 $\leq 2000$,$0\leq $ 初始的点权 $\leq 2000$。