suoi08 一收一行破 (tarjanLca+树状数组)
用一个差分树状数组维护一下每个深度的和,然后每次拿着路径端点和lca加一加减一减就行了
#include<bits/stdc++.h>
#define pa pair<int,int>
#define ll long long
using namespace std;
const int maxn=; inline ll rd(){
ll x=;char c=getchar();int neg=;
while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-'',c=getchar();
return x*neg;
} int N,M,L=;
int eg[maxn*][],egh[maxn],ect;
int dep[maxn],fa[maxn],v[maxn];
int qu[maxn*][],qh[maxn],op[maxn][];
ll tr[maxn];
bool flag[maxn]; inline int lowbit(int x){return x&(-x);}
inline int getfa(int x){return x==fa[x]?x:fa[x]=getfa(fa[x]);}
inline void adeg(int a,int b){
eg[++ect][]=b;eg[ect][]=egh[a];egh[a]=ect;
}inline void adq(int a,int b,int i){
qu[i][]=b;qu[i][]=qh[a];qh[a]=i;
} inline void add(int x,int y){
for(;x&&x<=L;x+=lowbit(x)) tr[x]+=y;
}
inline ll query(int x){
ll re=;for(;x;x-=lowbit(x)) re+=tr[x];return re;
} void tarjan(int x){
flag[x]=;
for(int i=egh[x];i!=-;i=eg[i][]){
if(flag[eg[i][]]) continue;
dep[eg[i][]]=dep[x]+;L=max(L,dep[x]+);
tarjan(eg[i][]);fa[getfa(eg[i][])]=getfa(x);
}
for(int i=qh[x];i!=-;i=qu[i][]){
if(flag[qu[i][]]) op[i>>][]=getfa(qu[i][]);
}
} int main(){
int i,j,k;
N=rd(),M=rd();
memset(egh,-,sizeof(egh));memset(qh,-,sizeof(qh));
for(i=;i<=N;i++) v[i]=rd();
for(i=;i<N;i++){
int a=rd(),b=rd();
adeg(a,b);adeg(b,a);
}for(i=;i<=M;i++){
int a=rd(),b=rd();
if(a==){
int c=rd();adq(b,c,i<<);adq(c,b,i<<|);
op[i][]=b,op[i][]=c;
}else op[i][]=b;
}for(i=;i<=N;i++) fa[i]=i;
dep[]=;tarjan();//printf("ll");
for(i=;i<=N;i++){
add(dep[i],v[i]);add(dep[i]+,-v[i]);
}
for(i=;i<=M;i++){
if(op[i][]){
add(dep[op[i][]],);add(dep[op[i][]]+,-);
if(op[i][]!=op[i][]) add(dep[op[i][]]+,),add(dep[op[i][]]+,-);
if(op[i][]!=op[i][]) add(dep[op[i][]]+,),add(dep[op[i][]]+,-);
}else{
if(op[i][]>L) printf("0\n");
else printf("%lld\n",query(op[i][]));
}
} return ;
}
suoi08 一收一行破 (tarjanLca+树状数组)的更多相关文章
- 【树状数组】【P2345】 奶牛集会
传送门 Description 约翰的\(N\)头奶牛每年都会参加"哞哞大会".哞哞大会是奶牛界的盛事.集会上的活动很多,比如堆干草,跨栅栏,摸牛仔的屁股等等.它们参加活动时会聚在 ...
- 【P1972】HH的项链——树状数组+询问离线
(题面摘自luogu) 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集 ...
- BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2221 Solved: 1179[Submit][Sta ...
- BZOJ 3529: [Sdoi2014]数表 [莫比乌斯反演 树状数组]
3529: [Sdoi2014]数表 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1399 Solved: 694[Submit][Status] ...
- 【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序
3881: [Coci2015]Divljak Time Limit: 20 Sec Memory Limit: 768 MBSubmit: 508 Solved: 158[Submit][Sta ...
- 【BZOJ-1103】大都市meg 树状数组 + DFS序
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2009 Solved: 1056[Submit][Sta ...
- 【BZOJ-4548&3658】小奇的糖果&Jabberwocky 双向链表 + 树状数组
4548: 小奇的糖果 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 103 Solved: 47[Submit][Status][Discuss] ...
- HD1556Color the ball(树状数组)
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- nyoj116_士兵杀敌(二)_树状数组
士兵杀敌(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的. 小工是南将军手下的军师,南将军经常 ...
随机推荐
- Scala学习(八)---Scala继承
Scala继承 摘要: 在本篇中,你将了解到Scala的继承与Java和C++最显著的不同.要点包括: 1. extends.final关键字和Java中相同 2. 重写方法时必须用override ...
- 《Head First 设计模式》例子的C++实现(5 单例模式)
最近在学习设计模式,用的是 <Head First 设计模式>这本书.感觉这本书写的还是很不错的,深入浅出的介绍了各种常用的设计模式.唯一有点不方便的地方是这本书的例子全都是用的 Java ...
- GATT服务搜索流程(一)
GATT的规范阅读起来还是比较简答, 但是这样的规范在代码上是如何实现的呢?下面就分析一下bluedroid 协议栈关于GATT的代码流程. BLE的设备都是在SMP之后进行ATT的流程的交互.从代码 ...
- koa2入门(2) koa-router 路由处理
项目地址:https://github.com/caochangkui/demo/tree/koa-test 1. 创建项目 创建目录 koa-test npm init 创建 package.jso ...
- netfilter/iptables 简介
netfilter 是 Linux 内置的一种防火墙机制,我们一般也称之为数据包过滤机制.iptables 则是一个命令行工具,用来配置 netfilter 防火墙.下图展示了一个带有防火墙的简单网络 ...
- 个人作业-Week1(新增详细说明)
快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上. 如何提出有价值的问题? 请看这个文章:http://www.cnblogs.com/rocedu/p/5167941.html ...
- final个人阅读作业
一.软件工程M1/M2总结 1.M1阶段总结: 我们团队的软件工程开发是按照前后端来分别开发的,我是负责后端的.我们的项目是做一个北航的社团平台,是一个网站.在后端我们使用的是ruby on rail ...
- LINUX内核设计第五周——扒开系统调用的三层皮(下)
- java — 静态绑定和动态绑定
绑定:一个方法的调用与方法所在的类关联起来.java中的绑定分为静态绑定和动态绑定,又被称作前期绑定和后期绑定. 静态绑定:(final.static.private)在程序执行前已经被绑定,也就是说 ...
- b总结
Beta 答辩总结 评审表 组名 格式 内容 ppt 演讲 答辩 总计 天机组 15 15 13 15 14 72 PMS 16 16 15 16 16 79 日不落战队 16 17 17 17 17 ...