Codeforces 384E-线段树+dfs序
如果这题只传到儿子不继续向下就是裸的dfs序+线段树,继续往下传的还改变正负号,我们可以根据它的层数来确定正负号
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define lson (id<<1)
#define rson ((id<<1)|1)
#define mid ((l+r)>>1)
const int maxn=;
using namespace std;
int t;
int p;
int n,m;
int u,v;
int x,val;
int dep[maxn+];
int a[maxn+];
int pos[maxn+];
int q[maxn+];
int son[maxn+];
int tree[maxn*+];
int sum[maxn*+];
int lazy[maxn*+];
vector<int> G[maxn+];
void push_up(int id){
tree[id]=tree[lson]+tree[rson];
}
void push_down(int id,int l,int r){
if(lazy[id]){
lazy[lson]+=lazy[id];
lazy[rson]+=lazy[id];
tree[lson]+=(mid-l+)*lazy[id];
tree[rson]+=(r-mid)*lazy[id];
lazy[id]=;
}
return ;
}
void build(int id,int l,int r){
if(l==r){
sum[id]=a[pos[l]];
return ;
}
build(lson,l,mid);
build(rson,mid+,r);
push_up(id);
return ;
}
void update(int id,int l,int r,int x,int y,int val){
if(l==x&&r==y){
tree[id]+=val*(r-l+);
lazy[id]+=val;
return ;
}
push_down(id,l,r);
if(x>mid){
update(rson,mid+,r,x,y,val);
} else if(y<=mid){
update(lson,l,mid,x,y,val);
} else {
update(lson,l,mid,x,mid,val);
update(rson,mid+,r,mid+,y,val);
}
}
int fi(int id,int l,int r,int x){
if(l==r){
int temp=dep[pos[l]]&;
if(!temp) temp=-;
return sum[id]+lazy[id]*temp;
}
push_down(id,l,r);
if(x<=mid){
return fi(lson,l,mid,x);
} else {
return fi(rson,mid+,r,x);
}
}
void dfs(int x,int fa,int d){
dep[x]=d;
pos[++p]=x;
q[x]=p;
for(size_t i=;i<G[x].size();i++){
if(G[x][i]==fa) continue;
dfs(G[x][i],x,d+);
son[x]++;
son[x]+=son[G[x][i]];
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=;i<n;i++){
scanf("%d%d",&u,&v);
G[u].push_back(v);
G[v].push_back(u);
}
dfs(,,);
build(,,n);
for(int i=;i<=m;i++){
scanf("%d",&t);
if(t==){
scanf("%d%d",&x,&val);
if(dep[x]&)
update(,,n,q[x],q[x]+son[x],val);
else update(,,n,q[x],q[x]+son[x],-val);
} else {
scanf("%d",&x);
int ans=fi(,,n,q[x]);
printf("%d\n",ans);
}
}
return ;
}
Codeforces 384E-线段树+dfs序的更多相关文章
- Tsinsen A1505. 树(张闻涛) 倍增LCA,可持久化线段树,DFS序
题目:http://www.tsinsen.com/A1505 A1505. 树(张闻涛) 时间限制:1.0s 内存限制:512.0MB 总提交次数:196 AC次数:65 平均分: ...
- BZOJ_3252_攻略_线段树+dfs序
BZOJ_3252_攻略_线段树+dfs序 Description 题目简述:树版[k取方格数] 众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏.今天他得到了一款新游戏< ...
- 【XSY2534】【BZOJ4817】树点涂色 LCT 倍增 线段树 dfs序
题目大意 Bob有一棵\(n\)个点的有根树,其中\(1\)号点是根节点.Bob在每个点上涂了颜色,并且每个点上的颜色不同.定义一条路径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜 ...
- 【bzoj4817】树点涂色 LCT+线段树+dfs序
Description Bob有一棵n个点的有根树,其中1号点是根节点.Bob在每个点上涂了颜色,并且每个点上的颜色不同.定义一条路 径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色. ...
- S - Query on a tree HDU - 3804 线段树+dfs序
S - Query on a tree HDU - 3804 离散化+权值线段树 题目大意:给你一棵树,让你求这棵树上询问的点到根节点直接最大小于等于val的长度. 这个题目和之前写的那个给你一棵 ...
- HDU 5692 线段树+dfs序
Snacks Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- Codeforces 571D - Campus(并查集+线段树+DFS 序,hot tea)
Codeforces 题目传送门 & 洛谷题目传送门 看到集合的合并,可以本能地想到并查集. 不过这题的操作与传统意义上的并查集不太一样,传统意义上的并查集一般是用来判断连通性的,而此题还需支 ...
- Codeforces 343D WaterTree - 线段树, DFS序
Description Translated by @Nishikino_Maki from Luogu 行吧是我翻的 Mad scientist Mike has constructed a roo ...
- Codeforces 877E - Danil and a Part-time Job 线段树+dfs序
给一个有根树,1e5个节点,每个节点有权值0/.1,1e5操作:1.将一个点的子树上所有点权值取反2.查询一个点的子树的权值和 题解: 先深搜整颗树,用dfs序建立每个点对应的区间,等于把树拍扁成 ...
- K. Random Numbers(Gym 101466K + 线段树 + dfs序 + 快速幂 + 唯一分解)
题目链接:http://codeforces.com/gym/101466/problem/K 题目: 题意: 给你一棵有n个节点的树,根节点始终为0,有两种操作: 1.RAND:查询以u为根节点的子 ...
随机推荐
- POJ 3071 Football:概率dp
题目链接:http://poj.org/problem?id=3071 题意: 给定n,有2^n支队伍参加足球赛. 给你所有的p[i][j],表示队伍i打败队伍j的概率. 淘汰赛制.第一轮(1,2)两 ...
- kvm初体验之六:克隆
目标:克隆vm1到vm1-clone 1. virsh suspend vm1 2. virt-clone --connect qemu:///system --original vm1 --name ...
- 程序猿老公去米国参加 WWDC,顺便想带渡老婆蜜月,如何办签证?
这个问题要拆开描述比较好:1. 老公是苹果开发者,抽中了2014 WWDC购票机会,打算自费去参加.如果自己成行,应该办何种签证?2. 顺带,两人新婚半年还未安排蜜月,打算提前几天过去先游览一下西海岸 ...
- linux cpu占用100%排查
某服务器上部署了若干tomcat实例,即若干垂直切分的Java站点服务,以及若干Java微服务,突然收到运维的CPU异常告警. 问:如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代 ...
- Android 在Activity中对SQLite的操作
注册 package com.scme.ui; import android.app.Activity; import android.content.Intent; import android.o ...
- CodeForces - 1000E :We Need More Bosses(无向图缩点+树的直径)
Your friend is developing a computer game. He has already decided how the game world should look lik ...
- 每天一个linux命令(3):cd命令
版权声明 更新:2017-04-27博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下命令cd. 2 开 ...
- MySQL_产品昨日库存与历史入库历史出库成本_20161124
产品昨日库存与历史入库历史出库成本 SELECT d.ID,a.*,e.昨日订单额 ,b.昨天入库额,b.历史2天,b.历史3天,b.历史4天,b.历史5天,b.历史6天,b.历史7天,b.历史8天, ...
- nginx开发笔记_ngx_hash源码解析
ngx_hash源码解析 ngx_hash是nginx中的hash表结构,具有以下特点: 静态结构,hash表创建后无法动态添加/删除KV. 采用连续存储方式解决碰撞问题.即出现碰撞的KV存放在连续地 ...
- 「USACO15FEB」「LuoguP3121」审查(黄金)Censoring (Gold)(AC自动机
题目描述 Farmer John has purchased a subscription to Good Hooveskeeping magazine for his cows, so they h ...