题意

给定一棵树和根,每个点有点权,强制在线询问\(x\)子树里离\(x\)距离不超过\(k\)的最小点权。

分析

  • 权值线段树合并的套路题,dfs,以深度作为下标,点权作为值,对每个点建立一颗权值线段树,然后回溯的时候合并到父节点的线段树上。
  • 合并时维护最小值,查询时也是查询区间最小值。
  • 内存给得多的情况下数组往死里开,不要白白送一发RE。

代码

#include <bits/stdc++.h>
using namespace std;
const int N=6e5+50;
const int INF=0x3f3f3f3f;
vector<int> g[N];
int a[N],n,rt,u,v,lst,q,x,k;
int mn[N*30],ls[N*30],rs[N*30],tot,dep[N],tr[N];
void insert(int &rt,int l,int r,int p,int v){
if(!rt){
rt=++tot;
}
mn[rt]=v;
int mid=(l+r)/2;
if(l<r){
if(p<=mid){
insert(ls[rt],l,mid,p,v);
}else{
insert(rs[rt],mid+1,r,p,v);
}
}
}
int merge(int a,int b){
if(!a || !b){
return a+b;
}
int rt=++tot;
mn[rt]=min(mn[a],mn[b]);
ls[rt]=merge(ls[a],ls[b]);
rs[rt]=merge(rs[a],rs[b]);
return rt;
}
int query(int rt,int l,int r,int ql,int qr){
if(!rt){
return INF;
}
if(ql<=l && qr>=r){
return mn[rt];
}
int ans=INF;
int mid=(l+r)/2;
if(ql<=mid){
ans=min(ans,query(ls[rt],l,mid,ql,qr));
}
if(qr>mid){
ans=min(ans,query(rs[rt],mid+1,r,ql,qr));
}
return ans;
}
void debug(int rt,int l,int r){
printf("%d %d %d\n",l,r,mn[rt]);
if(l==r){
return;
}
int mid=(l+r)/2;
debug(ls[rt],l,mid);
debug(rs[rt],mid+1,r);
}
void dfs(int u,int f){
dep[u]=dep[f]+1;
insert(tr[u],1,n,dep[u],a[u]);
int siz=g[u].size();
for(int i=0;i<siz;i++){
int v=g[u][i];
if(v==f){
continue;
}
dfs(v,u);
tr[u]=merge(tr[u],tr[v]);
}
}
int solve(int x,int k){
return query(tr[x],1,n,dep[x],dep[x]+k);
}
int main(){
// freopen("in.txt","r",stdin);
scanf("%d%d",&n,&rt);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<n;i++){
scanf("%d%d",&u,&v);
g[u].push_back(v);
g[v].push_back(u);
}
dfs(rt,0);
scanf("%d",&q);
while(q--){
scanf("%d%d",&x,&k);
x=(x+lst)%n+1;
k=(k+lst)%n;
printf("%d\n",lst=solve(x,k));
}
return 0;
}

最新文章

  1. Quartz2D总结
  2. cocos2d-x的CCAffineTransform相关变换实现原理
  3. Windows 8的本地化应用程序清单
  4. Linux同步机制(二) - 条件变量,信号量,文件锁,栅栏
  5. [Mac]Mac OS 10.11虚拟机搭建ReactNative遇坑记录
  6. HDFS基本知识整理
  7. 【分享】4412开发板-嵌入式Linux开发须要掌握的基础知识和技能
  8. 【转载】Manacher算法
  9. DOS批处理命令判断操作系统版本、执行各版本对应语句
  10. 【转】Tomcat7.0.42源代码运行环境搭建
  11. 1067: spark.components:NavigatorContent 类型值的隐式强制指令的目标是非相关类型 String
  12. NYNU_省赛选拔题(3)
  13. CSS3制作日历
  14. 关于php中id设置自增后不连续的问题
  15. PKU 3468 A Simple Problem with Integers
  16. 使用 acme.sh 签发续签 Let‘s Encrypt 证书 泛域名证书
  17. python from entry to abandon4
  18. .net 去除特殊字符
  19. HTTP请求方式
  20. linux下编译自己的库文件实践

热门文章

  1. Python web框架 Tornado异步非阻塞
  2. Aragorn&#39;s Story
  3. Oracle 监听hang住
  4. SQLMAP自注入--INJECTION TECGBUQUES FINGERPRINT
  5. [JZOJ5399]:Confess(随机化)
  6. Java中String.getBytes()
  7. conda查看某个安装包的依赖项
  8. 20175215 2018-2019-2 第六周java课程学习总结
  9. python3笔记十四:python可变与不可变数据类型+深浅拷贝
  10. Spring Boot中使用 Thymeleaf