[COGS 2551] 新型武器
图片加载可能有点慢,请跳过题面先看题解,谢谢




这个题好多解法啊。。。
可以主席树,可以按深度将操作排序离线做
我这里是动态开点线段树,对每一个深度种一棵线段树,下标是节点的\(dfs\)序
然后这个做法就很简单啊。。。
$
$
//made by Hero_of_Someone
#include<iostream>
#include<cstdio>
#include<cstdlib>
#define inf (1<<30)
#define N (600010)
#define il inline
#define RG register
using namespace std;
il int gi(){ RG int x=0,q=1; RG char ch=getchar(); while( ( ch<'0' || ch>'9' ) && ch!='-' ) ch=getchar();
if( ch=='-' ) q=-1,ch=getchar(); while(ch>='0' && ch<='9') x=x*10+ch-48,ch=getchar(); return q*x; }
int n,m,deep[N],w[N],st[N],ed[N],tim;
int rt[N],sum[N<<2],ls[N<<2],rs[N<<2],cnt;
int num,head[N],nxt[N<<1],to[N<<1];
il void add(int u,int v){
nxt[++num]=head[u];to[num]=v;head[u]=num;
nxt[++num]=head[v];to[num]=u;head[v]=num;
}
il void dfs(int x,int f){
st[x]=++tim;
deep[x]=deep[f]+1;
for(int i=head[x];i;i=nxt[i]){
int v=to[i]; if(v==f) continue;
dfs(v,x);
}
ed[x]=tim;
}
il void update(int &x,int l,int r,int k,int val){
if(!x) x=++cnt;
if(l==r){ sum[x]=val; return ; }
RG int mid=(l+r)>>1;
if(k<=mid) update(ls[x],l,mid,k,val);
else update(rs[x],mid+1,r,k,val);
sum[x]=sum[ls[x]]+sum[rs[x]];
}
il void init(){
n=gi();
for(int i=1;i<=n;i++) w[i]=gi();
for(int i=1;i<n;i++){
int u=gi(),v=gi();
add(u,v);
}
dfs(1,0);
for(int i=1;i<=n;i++)
update(rt[deep[i]],1,n,st[i],w[i]);
}
il int query(int x,int l,int r,int L,int R){
if(!x) return 0;
if(L==l && r==R) return sum[x];
int mid=(l+r)>>1,ret=0;
if(R<=mid) return query(ls[x],l,mid,L,R);
else if(L>mid) ret+=query(rs[x],mid+1,r,L,R);
else return query(ls[x],l,mid,L,mid)+query(rs[x],mid+1,r,mid+1,R);
}
il void work(){
m=gi();
while(m--){
int op=gi(),u=gi(),v=gi();
if(op==1) update(rt[deep[u]],1,n,st[u],v);
else{
if(deep[u]+v>n){ puts("0"); continue; }
printf("%d\n",query(rt[deep[u]+v],1,n,st[u],ed[u]));
}
}
}
int main(){ init(); work(); return 0; }
[COGS 2551] 新型武器的更多相关文章
- Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式
Linux就这个范儿 第15章 七种武器 linux 同步IO: sync.fsync与fdatasync Linux中的内存大页面huge page/large page David Cut ...
- Windows NT 之父 - David Cutler
David Cutler,大卫·卡特勒,一位传奇程序员,1988年去微软前号称硅谷最牛的内核开发人员,是VMS和Windows NT的首席设计师,被人们成为“操作系统天神”.他曾供职于杜邦.DEC等公 ...
- [转帖]Windows NT 之父 - David Cutler
Windows NT 之父 - David Cutler https://www.cnblogs.com/wangwust/p/6826200.html 曾经下过 夺路狂奔的电子书 但是还没看完.. ...
- 【历史】- Windows NT 之父 - David Cutler
David Cutler,大卫·卡特勒,一位传奇程序员,1988年去微软前号称硅谷最牛的内核开发人员,是VMS和Windows NT的首席设计师,被人们成为“操作系统天神”.他曾供职于杜邦.DEC等公 ...
- 解读:未来30年新兴科技趋势报告(AI Frist,IoT Second)
前段时间美国公布的一份长达35页的<未来30年新兴科技趋势报告>.该报告是在美国过去五年内由政府机构.咨询机构.智囊团.科研机构等发表的32份科技趋势相关研究调查报告的基础上提炼形成的. ...
- TypeScript: Angular 2 的秘密武器(译)
本文整理自Dan Wahlin在ng-conf上的talk.原视频地址: https://www.youtube.com/watch?v=e3djIqAGqZo 开场白 开场白主要分为三部分: 感谢了 ...
- 第一章-第七题( 有人认为,“中文编程”, 是解决中国程序员编程效率一个秘密武器,请问它是一个 “银弹” 么? )--By 侯伟婷
首先,“银弹”在百度百科中的解释是银色的子弹,我们更熟知的“银弹”一词,应该是在<人月神话>中提到的.银弹原本应该是指某种策略.技术或者技巧可以极大地提高程序员的生产力[1].此题目中关于 ...
- [转]Redis之七种武器
长生剑.孔雀翎.碧玉刀.多情环.离别钩.霸王枪.拳头是古龙笔下的七种武器,而本文打算将Redis的几种使用方式 Strings.Hashs.Lists.Sets.Sorted Sets.Pub/Sub ...
- 自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药
自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...
随机推荐
- 【css】文本超出行数以省略号显示
//超出2行省略overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webk ...
- Redis Twemproxy
主从复制+哨兵解决了读性能和高可用问题,但没有解决写性能问题. Twemproxy将写请求分配到不同节点处理. Twemproxy是Twitter开源的一个redis和memcache代理服务器. 允 ...
- ME_PROCESS_PO_CUST 实现采购订单行项目增强
用户希望创建采购订单时,输入行项目时,能根据采购订单类型,自动带出科目分类类别. 业务顾问看了一下配置,不能实现这个功能,所以用增强实现. 采购订单BADI增强:ME_PROCESS_PO_CUST. ...
- XAMPP、PHPstorm和PHPcharm和Windows环境下Python搭建+暴力破解
XAMPP的安装和使用 一.什么是XAMPP? XAMPP是最流行的PHP开发环境. XAMPP是完全免费且易于安装的Apache发行版,其中包含Apache.MariaDB.PHP和Perl. 类似 ...
- WPF后台线程更新UI
0.讲点废话 最近在做一个文件搜索的小软件,当文件多时,界面会出现假死的状况,于是乎想到另外开一个后台线程,更新界面上的ListView,但是却出现我下面的问题. 1.后台线程问题 2年前写过一个软件 ...
- [c#][福利]BTTool种子文件修改工具
前言 不知道各位看官是否有过类似的经历.好不容易找到一个电影的种子文件,想用百度云的离线下载功能去下载文件,却被百度云无情提示“离线文件因含有违规内容被系统屏蔽无法下载”!假设有这么一个场景,比如最近 ...
- effective c++ 笔记 (9-12)
//---------------------------15/03/29---------------------------- //#9 绝不在构造和析构过程中调头virtual函数 { / ...
- Redux系列x:源码解析
写在前面 redux的源码很简洁,除了applyMiddleware比较绕难以理解外,大部分还是 这里假设读者对redux有一定了解,就不科普redux的概念和API啥的啦,这部分建议直接看官方文档. ...
- HTML5遇到的问题
一.Uncaught SyntaxError: Unexpected identifier 解决办法: Uncaught SyntaxError: Unexpected identifier这个问题, ...
- Alpha 答辩总结
前言 作业发布 组长 成员 贡献比例 ★ 530 雨勤 23% 311 旭 23% 403 俊 18% 223 元 23% 437 海辉 13% 10天 Alpha 冲刺站立会议博客链接汇总 Alph ...