主♂席♂树♂裸♂题

https://syzoj.com/problem/279

https://oj.changjun.com.cn/problem/detail/pid/2425

// It is made by XZZ
#include<cstdio>
#include<algorithm>
#define il inline
#define rg register
#define vd void
#define sta static
typedef long long ll;
il int gi(){
rg int x=0,f=1;rg char ch=getchar();
while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*f;
}
const int _=30001;
int n,w[_],dfn[_],ed[_];
namespace cmt{
#define mid ((l+r)>>1)
typedef const int& ci;
const int __=_*100;
int index,rt[10001],ls[__],rs[__],sum[__];
il vd update(int&x,int l,int r,ci o,ci p){
if(!x)x=++index;sum[x]+=o;
if(l==r)return;
if(p<=mid)update(ls[x],l,mid,o,p);
else update(rs[x],mid+1,r,o,p);
}
il vd Update(int x,int p,int o){for(rg int i=p;i<=10000;i+=i&-i)update(rt[i],1,n,o,x);}
il int query(int x,int l,int r,int L,int R){
if(!sum[x])return 0;
if(L<=l&&r<=R)return sum[x];
if(L<=mid)
if(mid<R)return query(ls[x],l,mid,L,R)+query(rs[x],mid+1,r,L,R);
else return query(ls[x],l,mid,L,R);
else return query(rs[x],mid+1,r,L,R);
}
il int Query(int a,int b,int l,int r){
int ret=0;
for(rg int i=b;i;i-=i&-i)ret+=query(rt[i],1,n,l,r);
for(rg int i=a-1;i;i-=i&-i)ret-=query(rt[i],1,n,l,r);
//printf("%d %d %d %d %d\n",a,b,l,r,ret);
return ret;
}
#undef mid
}
namespace tree{
int fir[_],nxt[_*2],dis[_*2];
il vd link(int x,int y){
sta int id;
nxt[++id]=fir[x],fir[x]=id,dis[id]=y;
nxt[++id]=fir[y],fir[y]=id,dis[id]=x;
}
il vd dfs(int x,int fa=-1){
dfn[x]=++dfn[0];
for(int i=fir[x];i;i=nxt[i])
if(fa!=dis[i])dfs(dis[i],x);
ed[x]=dfn[0];
}
il vd prepare(){
dfs(1);
for(rg int i=1;i<=n;++i)cmt::Update(dfn[i],w[i],1);
}
}
int main(){
#ifdef xzz
freopen("huaji.in","r",stdin);
freopen("huaji.out","w",stdout);
#endif
n=gi();
for(rg int i=1;i<=n;++i)w[i]=gi();
for(rg int i=1;i<n;++i)tree::link(gi(),gi());
tree::prepare();
int q=gi(),o,a,b,u;
while(q--){
o=gi();
if(o==1){
u=gi(),a=gi();
int l=1,r=10000,mid;
while(l<r){
mid=(l+r)>>1;
if(cmt::Query(1,mid,dfn[u],ed[u])<a)l=mid+1;
else r=mid;
}
printf("%d\n",l);
}else if(o==2){
u=gi(),a=gi(),b=gi();
printf("%d\n",cmt::Query(a,b,dfn[u],ed[u]));
}else if(o==3){
u=gi(),a=gi();
cmt::Update(dfn[u],w[u],-1);
cmt::Update(dfn[u],w[u]=a,1);
}else puts("FA♂Q");
}
return 0;
}

[SYZOJ279]滑♂稽♂树的更多相关文章

  1. 【SYZOJ279】滑稽♂树(树套树)

    [SYZOJ279]滑稽♂树(树套树) 题面 SYZOJ CJOJ 题目描述 zzsyz实验楼里面种了一棵滑稽树,只有滑稽之力达到大乘期的oier才能看到.虽然我们看不到,但是还是知道一些信息: 这真 ...

  2. 【魔改】树状数组 牛客多校第五场I vcd 几何+阅读理解

    https://www.nowcoder.com/acm/contest/143/I vc-dimension 题解:分三种情况,组合数学算一下,其中一种要用树状数组维护 技巧(来自UESTC):1. ...

  3. Codeforces Round #345 (Div. 2)——A. Joysticks(模拟+特判)

    A. Joysticks time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  4. 【10.7校内测试】【队列滑窗】【2-sat】【贪心+栈二分+线段树(noip模拟好题)】【生日祭!】

    比较好想的一道题,直接用队列滑窗,因为扫一遍往队列里加东西时,改变的只有一个值,开桶储存好就行了! #include<bits/stdc++.h> using namespace std; ...

  5. 如丝般顺滑:DDD再实践之类目树管理

    在上次反思DDD实践之后,在类目树管理项目中再次实践DDD.从需求分析到建模和具体的落地,结合个人体会,都是干货.

  6. 基于bootstrap的jQuery多级列表树插件 treeview

    http://www.cnblogs.com/mfc-itblog/p/5233453.html http://www.htmleaf.com/jQuery/Menu-Navigation/20150 ...

  7. LCT总结——概念篇+洛谷P3690[模板]Link Cut Tree(动态树)(LCT,Splay)

    为了优化体验(其实是强迫症),蒟蒻把总结拆成了两篇,方便不同学习阶段的Dalao们切换. LCT总结--应用篇戳这里 概念.性质简述 首先介绍一下链剖分的概念(感谢laofu的讲课) 链剖分,是指一类 ...

  8. 基于bootstrap的jQuery多级列表树插件

    简要教程 bootstrap-treeview是一款效果非常酷的基于bootstrap的jQuery多级列表树插件.该jQuery插件基于Twitter Bootstrap,以简单和优雅的方式来显示一 ...

  9. 【右滑返回】滑动冲突 Scroller DecorView

    基本思想 我们的滑动逻辑主要是利用View的scrollBy() 方法, scrollTo()方法和Scroller类来实现的 当手指拖动视图的时候,我们监听手指在屏幕上滑动的距离 利用View的sc ...

随机推荐

  1. 使用CoreData [2]

    使用CoreData [2] 此篇讲解CoreData处理关系型数据. 1. 先创建出Student于Teacher的实体. 2. 确定关系,并修改描述 3. 创建对象,并查看一下关系(Teacher ...

  2. APUE8进程控制 fork vfork exec

  3. [EffectiveC++]item45:运用成员函数模板接受所有兼容类型

  4. elif 相当于else&if

    if  条件: 语句块 elif 条件: 语句块 ... else                      #elif好像要有一个else作为结尾

  5. #006 dependencies和devDependencies的区别

    dependencies 和 devDependencies 区别 在 npm 中的 package.json ,有两种插件的依赖包配置形式。 dependencies 和 devDependenci ...

  6. win命令行环境编码设置为utf-8

    win命令行环境编码默认为gbk,有时运行文件编码为utf-8,会导致编码错误,可以修改注册表进行设置环境编码. win+r =>regedit 找到 计算机\HKEY_CURRENT_USER ...

  7. 洛谷 P1251 餐巾计划问题(线性规划网络优化)【费用流】

    (题外话:心塞...大部分时间都在debug,拆点忘记加N,总边数算错,数据类型标错,字母写错......) 题目链接:https://www.luogu.org/problemnew/show/P1 ...

  8. Sublime Text 3中文乱码

    Sublime Text 3是很好的代码编辑器,没有之一,因为她的性感高亮代码配色,更因为它的小巧,但是它默认不支持GBK的编码格式,因此打开GBK的代码文件,如果里面有中文的话,就会乱码,如下所示: ...

  9. 4199. [NOI2015]品酒大会【后缀数组+并查集】

    Description 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品 酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加.在大会的晚餐上,调酒师 ...

  10. Day2 Mybatis初识(二)

    mapper接口开发 传统dao的开发问题(ibatis) 方法调用:字符串易错,硬编码 mapper代理开发 a) 编写全局配置 b) 编写接口(自动根据接口和映射文件创建实现类) c) 编写映射文 ...