[SHOI2012]魔法树
洛咕 题意:n个节点的树,每个点的初始点权为0,两种操作,一个是将 \((u,v)\) 路径上的每个点的点权加上 \(d\) ,一个是询问以 \(x\) 节点为根的子树的权值和. \(n,m<=100000.\) 树链剖分+线段树模板题.操作一是区间增加,操作二是区间查询. #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<queue> #include<map> #include<set> #define ll long long using namespace std; inline int read(){ int x=0,o=1;char ch=getchar(); while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar(); if(ch=='-')o=-1,ch=getchar(); while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*o; } const int N=100005; int tot,head[N],nxt[N<<1],to[N<<1]; inline void add(int a,int b){ nxt[++tot