BZOJ 3720 树分块
借鉴了别人的代码……
//By SiriusRen
#include <cmath>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 66666
struct Blocks{
int a[210],size;
void Insert(int x){
++size;int i;
for(i=size;i>1&&a[i-1]>x;i--)a[i]=a[i-1];
a[i]=x;
}
void Modify(int x,int y){
int temp=lower_bound(a+1,a+1+size,x)-a;
for(;temp<size&&a[temp+1]<y;temp++)a[temp]=a[temp+1];
for(;temp>1&&a[temp-1]>y;temp--)a[temp]=a[temp-1];
a[temp]=y;
}
int Query(int x){
return size-(upper_bound(a+1,a+1+size,x)-a)+1;
}
}blocks[10500];
int n,m,op,xx,yy,block,cnt,ans,a[N],fa[N],belong[N];
int first[N],bfirst[N],next[N*2],v[N*2],tot;
void add(int Head[],int x,int y){v[tot]=y,next[tot]=Head[x],Head[x]=tot++;}
void DFS(int x){
if(blocks[belong[fa[x]]].size==block)
blocks[belong[x]=++cnt].Insert(a[x]),add(bfirst,belong[fa[x]],cnt);
else blocks[belong[x]=belong[fa[x]]].Insert(a[x]);
for(int i=first[x];~i;i=next[i])
if(v[i]!=fa[x])fa[v[i]]=x,DFS(v[i]);
}
void bdfs(int x,int y){
ans+=blocks[x].Query(y);
for(int i=bfirst[x];~i;i=next[i])bdfs(v[i],y);
}
void dfs(int x,int y){
if(a[x]>y)ans++;
for(int i=first[x];~i;i=next[i])
if(v[i]!=fa[x]){
if(belong[v[i]]==belong[x])dfs(v[i],y);
else bdfs(belong[v[i]],y);
}
}
int main(){
memset(first,-1,sizeof(first)),memset(bfirst,-1,sizeof(bfirst));
scanf("%d",&n);
for(int i=1;i<n;i++)
scanf("%d%d",&xx,&yy),add(first,xx,yy),add(first,yy,xx);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
block=int(sqrt(n)+0.5),DFS(1);
scanf("%d",&m);
for(int i=1;i<=m;i++){
scanf("%d%d%d",&op,&xx,&yy),xx^=ans,yy^=ans;
if(!op){ans=0;dfs(xx,yy);printf("%d\n",ans);}
else if(op==1)blocks[belong[xx]].Modify(a[xx],yy),a[xx]=yy;
else{
a[++n]=yy,add(first,xx,n),fa[n]=xx;
if(blocks[belong[xx]].size==block)
blocks[belong[n]=++cnt].Insert(a[n]),add(bfirst,belong[xx],cnt);
else blocks[belong[n]=belong[xx]].Insert(a[n]);
}
}
}
BZOJ 3720 树分块的更多相关文章
- bzoj 1086 树分块
将树分成一些块,做法见vfleaking博客. /************************************************************** Problem: 108 ...
- BZOJ.3720.Gty的妹子树(树分块)
题目链接 洛谷上惨遭爆零是为什么.. 另外这个树分块算法是假的. /* 插入删除只涉及一个数,故每次可以枚举一遍,而不是重构完后sort */ #include<cmath> #inclu ...
- [BZOJ 3720][JZYZOJ 2016]gty的妹子树 强制在线 树分块/树套树
jzyzoj的p2016 先码着,强制在线的树分块或者树套树?关键是我树分块还在入门阶段树套树完全不会啊摔 http://blog.csdn.net/jiangyuze831/article/de ...
- bzoj 3720 Gty的妹子树 树分块?瞎搞
Gty的妹子树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2149 Solved: 781[Submit][Status][Discuss] D ...
- [BZOJ 1086] [SCOI2005] 王室联邦 【树分块】
题目链接:BZOJ - 1086 题目分析 这道题要求给树分块,使得每一块的大小在 [B, 3B] 之间,并且可以通过一个块外的节点(块根)使得整个块联通. 那么我们使用一种 DFS,维护一个栈,DF ...
- 【BZOJ】4129: Haruna’s Breakfast 树分块+带修改莫队算法
[题意]给定n个节点的树,每个节点有一个数字ai,m次操作:修改一个节点的数字,或询问一条树链的数字集合的mex值.n,m<=5*10^4,0<=ai<=10^9. [算法]树分块+ ...
- [BZOJ 3731] Gty的超级妹子树 (树分块)
[BZOJ 3731] Gty的超级妹子树 (树分块) 题面 给出一棵树(或森林),每个点都有一个值.现在有四种操作 1.查询x子树里>y的值有多少个 2.把点x的值改成y 3.添加一个新节点, ...
- 【BZOJ 3735】苹果树 树上莫队(树分块+离线莫队+鬼畜的压行)
2016-05-09 UPD:学习了新的DFS序列分块,然后发现这个东西是战术核导弹?反正比下面的树分块不知道要快到哪里去了 #include<cmath> #include<cst ...
- 【BZOJ】3052: [wc2013]糖果公园 树分块+带修改莫队算法
[题目]#58. [WC2013]糖果公园 [题意]给定n个点的树,m种糖果,每个点有糖果ci.给定n个数wi和m个数vi,第i颗糖果第j次品尝的价值是v(i)*w(j).q次询问一条链上每个点价值的 ...
随机推荐
- 读书笔记6-浪潮之巅(part1)
浪潮之巅 ——对于一个人来讲,一生能够赶上一次科技革命的浪潮也就足够了 近一百多年来,总有一些公司很幸运地站在了技术革命的浪尖上.而一旦处在那个位置,就算只用随着潮流的发展而前行,也能安安稳稳地发展十 ...
- Bootstrap3 学习笔记
图片新窗口打开浏览
- 基于SLIC分割的特征点检测
一:pipeLIne (1):基于模型的pose估计综述: 对于一个3D模型,可以投影到平面,得到不同的位姿,而pose识别是利用所见的2.5D图像,来估计模型,并同时识别出位姿. 3D模型投影时注意 ...
- 页面footer在底部
页脚动态贴在底部需要满足以下两个条件: 当主体的内容高度不超过可视区域高度的时候,页脚贴在页面底部. 当主体的内容高度超过可视区域高度的时候,页脚将按正常布局. 方法一:footer高度固定+绝对定位 ...
- Java中的强制转换
特点: 1.需要程序员手动修改代码 2.语法:范围小的类型 变量名 = (范围小的类型)范围大的类型的数据 3.从范围小 到 范围大 注意: 强制类型转换可能会造成数据的丢失哦,小伙伴们在应用时一定 ...
- Spring cloud服务的提供者建立
1.0我们要在这里要建立一个服务的提供者模块,是一个module,类似于服务的公共模块 第一步:添加架包 <project xmlns="http://maven.apache.org ...
- 路飞学城Python-Day113
107-HTTP协议的无状态保存 什么是无状态保存? HTTP无状态请求就是客户端每次发送的请求都是单独的新请求,每一次请求都是独立的,这样的特点在网站上就是服务器登录的时候记录浏览器的信息,建立 ...
- spring rest docs自定义代码片段
Spring rest docs 文档插件在生成文档时会默认生成6个代码片段,自适应生成其它片段.通过阅读官方文档发现其可以自定义生成的代码片段,但是官方只说了可以自定义模版,修改现有的代码片段的方法 ...
- 动态规划——独立任务最优调度(Independent Task Scheduling)
题目链接 题目描述 用2 台处理机A 和B 处理n 个作业.设第i 个作业交给机器A 处理时需要时间i a ,若由机器B 来处理,则需要时间i b .由于各作业的特点和机器的性能关系,很可能对于某些i ...
- 破解sublim_Text3
1.更改hosts文件 windows系统的hosts文件在C:\Windows\System32\drivers\etc 路径下,其他系统请自行百度 在hosts文件中加入下面两行: 127.0.0 ...