CF893F:Subtree Minimum Query(线段树合并)
Description
Input
Output
Sample Input
Sample Output
2
5
Solution
线段树合并板子题。注意数组大小QAQ我老是开小$RE$……
感觉$Slr$和$beretty$两个人数据结构学傻了用了另一个题非常麻烦的做法写的这个题……
Code
#include<iostream>
#include<cstdio>
#define N (100009)
using namespace std; struct Sgt{int ls,rs,min;}Segt[N<<];
struct Edge{int to,next;}edge[N<<];
int n,m,sgt_num,ans,lastans,u,v,p,q,r;
int a[N],Root[N],Depth[N];
int head[N],num_edge; void add(int u,int v)
{
edge[++num_edge].to=v;
edge[num_edge].next=head[u];
head[u]=num_edge;
} void Update(int &now,int l,int r,int x,int v)
{
if (!now) now=++sgt_num;
Segt[now].min=2e9;
if (l==r) {Segt[now].min=v; return;}
int mid=(l+r)>>;
if (x<=mid) Update(Segt[now].ls,l,mid,x,v);
else Update(Segt[now].rs,mid+,r,x,v);
int ls=Segt[now].ls, rs=Segt[now].rs;
Segt[now].min=min(Segt[ls].min,Segt[rs].min);
} int Merge(int x,int y)
{
if (!x || !y) return x|y;
int tmp=++sgt_num;
Segt[tmp].ls=Merge(Segt[x].ls,Segt[y].ls);
Segt[tmp].rs=Merge(Segt[x].rs,Segt[y].rs);
Segt[tmp].min=min(Segt[x].min,Segt[y].min);
return tmp;
} void DFS(int x,int fa)
{
Depth[x]=Depth[fa]+;
Update(Root[x],,n,Depth[x],a[x]);
for (int i=head[x]; i; i=edge[i].next)
if (edge[i].to!=fa)
{
DFS(edge[i].to,x);
Root[x]=Merge(Root[x],Root[edge[i].to]);
}
} int Query(int now,int l,int r,int l1,int r1)
{
if (l>r1 || r<l1) return 2e9;
if (l1<=l && r<=r1) return Segt[now].min;
int mid=(l+r)>>, ls=Segt[now].ls, rs=Segt[now].rs;
return min(Query(ls,l,mid,l1,r1),Query(rs,mid+,r,l1,r1));
} int main()
{
Segt[].min=2e9;
scanf("%d%d",&n,&r);
for (int i=; i<=n; ++i)
scanf("%d",&a[i]);
for (int i=; i<=n-; ++i)
{
scanf("%d%d",&u,&v);
add(u,v); add(v,u);
}
DFS(r,);
scanf("%d",&m);
for (int i=; i<=m; ++i)
{
scanf("%d%d",&p,&q);
p=(p+lastans)%n+; q=(q+lastans)%n;
ans=Query(Root[p],,n,Depth[p],Depth[p]+q);
printf("%d\n",ans); lastans=ans;
}
}
CF893F:Subtree Minimum Query(线段树合并)的更多相关文章
- CF893F Subtree Minimum Query 主席树
如果是求和就很好做了... 不是求和也无伤大雅.... 一维太难限制条件了,考虑二维限制 一维$dfs$序,一维$dep$序 询问$(x, k)$对应着在$dfs$上查$[dfn[x], dfn[x] ...
- CF893F Subtree Minimum Query 解题报告
CF893F Subtree Minimum Query 输入输出格式 输入格式: The first line contains two integers \(n\) and \(r\) ( \(1 ...
- EC Round 33 F. Subtree Minimum Query 主席树/线段树合并
这题非常好!!! 主席树版本 很简单的题目,给一个按照指定节点的树,树上有点权,你需要回答给定节点的子树中,和其距离不超过k的节点中,权值最小的. 肯定首先一想,按照dfs序列建树,然后按照深度为下标 ...
- [CF893F] Subtree Minimum Query
Description: 给定一棵树,每次询问某点子树中到其不超过k的所有点的最小点权 强制在线 Hint: \(n,m\le 10^5\) Solution: 看到题目第一反应是以深度为下标,dfs ...
- Subtree Minimum Query CodeForces - 893F (线段树合并+线段树动态开点)
题目链接:https://cn.vjudge.net/problem/CodeForces-893F 题目大意:给你n个点,每一个点有权值,然后这n个点会构成一棵树,边权为1.然后有q次询问,每一次询 ...
- 2019.01.19 codeforces893F.Subtree Minimum Query(线段树合并)
传送门 线段树合并菜题. 题意简述:给一棵带点权的有根树,多次询问某个点ppp子树内距离ppp不超过kkk的点的点权最小值,强制在线. 思路: 当然可以用dfsdfsdfs序+主席树水过去. 然而线段 ...
- Educational Codeforces Round 33 (Rated for Div. 2) F. Subtree Minimum Query(主席树合并)
题意 给定一棵 \(n\) 个点的带点权树,以 \(1\) 为根, \(m\) 次询问,每次询问给出两个值 \(p, k\) ,求以下值: \(p\) 的子树中距离 \(p \le k\) 的所有点权 ...
- hdu 5511 Minimum Cut-Cut——分类讨论思想+线段树合并
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5511 题意:割一些边使得无向图变成不连通的,并且恰好割了两条给定生成树上的边.满足非树边两段一定在给定生成 ...
- [cf contest 893(edu round 33)] F - Subtree Minimum Query
[cf contest 893(edu round 33)] F - Subtree Minimum Query time limit per test 6 seconds memory limit ...
随机推荐
- Winform 常用的方法
一,Winform 如何内嵌窗体 1,判断窗体中是否以还有内嵌窗体 private void ClosePreForm() { foreach (Control item in this.spCont ...
- 线程5--GCD简介
/******************************************************/ 同步函数 (1)并发队列:不会开线程 (2)串行队列:不会开线程 异步函数 ...
- Nginx面试
声明:此文章非本人所 原创,是别人分享所得,如有知道原作者是谁可以联系本人,如有转载请加上此段话 1.请解释一下什么是 Nginx? Nginx是一个 web服务器和反向代理服务器,用于 HTTP.H ...
- 微服务与DevOps关系
随着IT技术的不断发展,从传统的IT建设模型逐步向新型IT建设模型过渡,建设模式的改变,必然影响应用系统的全生命周期.应用系统的建设经过单体应用.SOA应用.逐步走向微服务应用,至于何为单体应用.SO ...
- ef oracle参数化问题
并非所有变量都已绑定 假如一个sql是这样的 string sql =@" select id from a where date between :StartDate and :EndDa ...
- 聊聊MyBatis缓存机制【美团-推荐】
聊聊MyBatis缓存机制 2018年01月19日 作者: 凯伦 文章链接 18778字 38分钟阅读 前言 MyBatis是常见的Java数据库访问层框架.在日常工作中,开发人员多数情况下是使用My ...
- 视区相关单位vw, vh..简介以及可实际应用场景——张鑫旭
一.N多的唠哩唠叨 CSS3中一些新的单位早在去年春暖花开的时候就介绍了,参见:CSS长度值及时间.频率.角度单位.显然,其中就提到了本文要感叹的单位vw, vh,见下图: 不过“我看见你”和“我触碰 ...
- 【代码笔记】iOS-左右可滑动的选择条
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- 润乾V5手机报表说明文档
1.手机报表实例页面简要说明 index.jsp 是报表资源列表页面: mbReport.jsp 是报表展现页面: mbParam.jsp是参数报表展现页面: echarts.jsp是带有echart ...
- 【Java】函数使用
package aaa; public class aaa { public static int add(int a,int b) { return a+b; } public static voi ...