[BZOJ 3720][JZYZOJ 2016]gty的妹子树 强制在线 树分块/树套树
先码着,强制在线的树分块或者树套树?关键是我树分块还在入门阶段树套树完全不会啊摔
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstdlib>
using namespace std;
const int maxn=;
int n,m;
int lastans=;
int f[*maxn]={};
int ad=;
struct nod{
int y;
int next;
}e[maxn*];
struct node{
int num;
int a[];
inline int ask(int k){
int fff=upper_bound(a+,a+num+,k)-a-;
return num-fff;
}
}blo[];
struct no{
int next[maxn];
int ai[maxn];
int head[maxn];
int shu;
inline void add(int x,int y){
next[++shu]=head[x];
ai[shu]=y;
head[x]=shu;
}
}gre;
int bel[maxn]={};
int tail=;
int sz;
int a[maxn]={},head[maxn]={};
int tot=;
inline void init(int x,int y){
e[++tail].next=head[x];
e[tail].y=y;
head[x]=tail;
}
void dfs(int x,int fa){
int now=bel[x];
blo[now].a[++blo[now].num]=a[x];
f[x]=fa;
for(int i=head[x];i;i=e[i].next){
if(e[i].y==fa){
continue;
}
if(blo[now].num<sz){
bel[e[i].y]=now;
}
else{
bel[e[i].y]=++tot;
}
if(bel[e[i].y]!=now){
gre.add(now,bel[e[i].y]);
}
dfs(e[i].y,x);
}
}
int coun(int x,int k){
int ans=blo[x].ask(k);
for(int i=gre.head[x];i;i=gre.next[i]){
ans+=coun(gre.ai[i],k);
}
return ans;
}
int cnt(int x,int fa,int k){
int ans=a[x]>k;
for(int i=head[x];i;i=e[i].next){
if(e[i].y==fa) continue;
if(bel[e[i].y]==bel[x]){
ans+=cnt(e[i].y,x,k);
}
else{
ans+=coun(bel[e[i].y],k);
}
}
return ans;
}
int main(){
//freopen("wtf.in","r",stdin);
//freopen("wtf.out","w",stdout);
memset(e,,sizeof(e));
memset(blo,,sizeof(blo));
scanf("%d",&n);
ad=n;
int u,v;
sz=(int)sqrt((double)n);
for(int i=;i<n;i++){
scanf("%d%d",&u,&v);
init(u,v);
init(v,u);
}
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
}
scanf("%d",&m);
bel[]=++tot;
dfs(,);
for(int i=;i<=tot;++i){
sort(blo[i].a+,blo[i].a+blo[i].num+);
}
for(int op,u,x,i=;i<=m;++i){ scanf("%d%d%d",&op,&u,&x);
u^=lastans,x^=lastans;
if(op==){
printf("%d\n",lastans=cnt(u,f[u],x));
}
else if(op==){
int fr=bel[u];
for(int i=;i<=blo[fr].num;i++){
if(blo[fr].a[i]==a[u]){
blo[fr].a[i]=a[u]=x;
}
}
sort(blo[fr].a+,blo[fr].a++blo[fr].num);
}
else{
int fr=bel[u];
a[++ad]=x;
init(u,ad);
f[ad]=u;
if(blo[fr].num<sz){
bel[ad]=fr;
blo[fr].a[++blo[fr].num]=x;
sort(blo[fr].a+,blo[fr].a++blo[fr].num);
}
else{
bel[ad]=++tot;
blo[bel[ad]].a[++blo[bel[ad]].num]=x;
gre.add(fr,bel[ad]);
}
}
}
return ;
}
[BZOJ 3720][JZYZOJ 2016]gty的妹子树 强制在线 树分块/树套树的更多相关文章
- 【BZOJ】【4066】简单题(强制在线)
KD-Tree KD-Tree的进阶姿势戳这里 http://zyfzyf.is-programmer.com/posts/92431.html 为啥有种线段树&平衡树的即视感……(树形结构的 ...
- [主席树 强制在线]ZOJ3888 Twelves Monkeys
题意:有n年,其中m年可以乘时光机回到过去,q个询问 下面m行,x,y 表示可以在y年穿越回x年, 保证y>x 下面q个询问, 每个询问有个年份k 问的是k年前面 有多少年可以通过一种以上($\ ...
- [bzoj 3720] Gty的妹子树 (树上分块)
树上分块(块状树) Description 我曾在弦歌之中听过你, 檀板声碎,半出折子戏. 舞榭歌台被风吹去, 岁月深处尚有余音一缕-- Gty神(xian)犇(chong)从来不缺妹子-- 他来到了 ...
- BZOJ 3720: Gty的妹子树 [树上size分块]
传送门 题意: 一棵树,询问子树中权值大于$k$的节点个数,修改点权值,插入新点:强制在线 一开始以为询问多少种不同的权值,那道CF的强制在线带修改版,直接吓哭 然后发现看错了这不一道树上分块水题.. ...
- bzoj 3744: Gty的妹子序列 主席树+分块
3744: Gty的妹子序列 Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 101 Solved: 34[Submit][Status] Descr ...
- BZOJ 3744: Gty的妹子序列 【分块 + 树状数组 + 主席树】
任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=3744 3744: Gty的妹子序列 Time Limit: 20 Sec Memory ...
- BZOJ 3744 Gty的妹子序列 (分块+树状数组+主席树)
题面传送门 题目大意:给你一个序列,多次询问,每次取出一段连续的子序列$[l,r]$,询问这段子序列的逆序对个数,强制在线 很熟悉的分块套路啊,和很多可持久化01Trie的题目类似,用分块预处理出贡献 ...
- BZOJ 3744 Gty的妹子序列
Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树上掉落下来了许多妹子,他发现 她们排成了一个序 ...
- 【BZOJ 3809】 3809: Gty的二逼妹子序列 (莫队+分块)
3809: Gty的二逼妹子序列 Time Limit: 80 Sec Memory Limit: 28 MBSubmit: 1728 Solved: 513 Description Autumn ...
随机推荐
- 【BZOJ】2120: 数颜色 带修改的莫队算法
[题意]给定n个数字,m次操作,每次询问区间不同数字的个数,或修改某个位置的数字.n,m<=10^4,ai<=10^6. [算法]带修改的莫队算法 [题解]对于询问(x,y,t),其中t是 ...
- 【BZOJ】1023: [SHOI2008]cactus仙人掌图 静态仙人掌(DFS树)
[题意]给定仙人掌图(每条边至多在一个简单环上),求直径(最长的点对最短路径).n<=50000,m<=10^7. [算法]DFS树处理仙人掌 [题解]参考:仙人掌相关问题的处理方法(未完 ...
- 【CodeForces】915 G. Coprime Arrays 莫比乌斯反演
[题目]G. Coprime Arrays [题意]当含n个数字的数组的总gcd=1时认为这个数组互质.给定n和k,求所有sum(i),i=1~k,其中sum(i)为n个数字的数组,每个数字均< ...
- Problem 2278 YYS (FZU + java大数)
题目链接:http://acm.fzu.edu.cn/problem.php?pid=2278 题目: 题意: 有n种卡牌,每种卡牌被抽到的概率为1/n,求收齐所有卡牌的天数的期望. 思路: 易推得公 ...
- spring boot 自定义属性覆盖application文件属性
参考 Spring boot源码分析-ApplicationListener应用环境: https://blog.csdn.net/jamet/article/details/78042486 加载a ...
- 64_s1
SAASound-3.2-17.fc26.i686.rpm 13-Feb-2017 22:13 27650 SAASound-3.2-17.fc26.x86_64.rpm 13-Feb-2017 23 ...
- java-String中的 intern()
1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ne ...
- 「pycaffe指南」使用caffe的NetSpec.py中的Python接口自动生成×.prototxt文件
https://www.jianshu.com/p/1a420445deea 作者:MapReducer 链接:https://www.jianshu.com/p/1a420445deea 來源:简书 ...
- Freemaker 自定义指令和函数
自定义函数和指令都可以在前台或者后台进行指定. 个人理解:指令的作用,主要是进行页面调整之后进行输出:函数的作用,主要是为了进行运算,返回运算结果供前台展示. (一) 自定义指令 使用以下格式调用自定 ...
- jplayer.js 与 video.js
HTML5 - 两款基于JS的视频播放器 都是基于h5 video 标签,如果不支持则会自动转成flash,这里个人比较推荐使用jplayer; 1.video.js pc端有时候会与视频打交道,如果 ...