HDU 6031 Innumerable Ancestors
树状数组,倍增,枚举,$dfs$序。
对于每一次的询问,可以枚举$B$集合中的所有点,对于每一个点,在树上二分$LCA$,找到最低的更新答案。
判断是否是$LCA$可以搞个$dfs$序,将$A$集合中所有点标$1$,然后查询子树对应的区间上的区间和。
#include <bits/stdc++.h>
using namespace std; const int maxn = ;
int L[maxn],R[maxn];
int c[*maxn];
int h[maxn];
int to[*maxn];
int nx[*maxn];
int sz;
int tt;
int dp[][];
int dep[];
int ans;
int n,m; int k1,k2;
int A[],B[]; void add(int a,int b)
{
to[sz] = b;
nx[sz] = h[a];
h[a] = sz++;
} void dfs(int x,int y)
{
L[x] = tt; tt++;
dp[x][] = y; if(y==-) dep[x]=;
else dep[x] = dep[y]+; for(int i=h[x];i!=-;i = nx[i])
{
if(L[to[i]]) continue;
dfs(to[i],x);
}
R[x] = tt; tt++;
} int lowbit(int x)
{
return x&(-x);
} void update(int pos,int val)
{
for(int i=pos;i<=*n;i=i+lowbit(i))
{
c[i] += val;
}
} int get(int pos)
{
int res=; for(int i=pos;i>;i=i-lowbit(i))
{
res=res+c[i];
} return res;
} void work(int x)
{
while()
{
int Q = dp[x][];
if(get(R[Q])-get(L[Q]-))
{
ans = max(ans,dep[Q]);
break;
} for(int i=;i>=;i--)
{
int to = dp[x][i];
if(to==-) continue;
if(get(R[to])-get(L[to]-)) continue;
x=to;
break;
}
} x = dp[x][];
ans = max(ans,dep[x]);
} int main()
{
while(~scanf("%d%d",&n,&m))
{
sz=; for(int i=;i<=n;i++)
{
c[i]=;
h[i]=-;
L[i]=;
R[i]=;
} for(int i=;i<=n-;i++)
{
int a,b; scanf("%d%d",&a,&b);
add(a,b); add(b,a);
} tt=; dfs(,-); for(int j=;j<=;j++)
{
for(int i=;i<=n;i++)
{
if(dp[i][j-]==-) dp[i][j]=-;
else dp[i][j] = dp[dp[i][j-]][j-];
}
} for(int i=;i<=m;i++)
{
scanf("%d",&k1); for(int j=;j<=k1;j++) scanf("%d",&A[j]), update(L[A[j]],);
scanf("%d",&k2); ans=; for(int j=;j<=k2;j++)
{
scanf("%d",&B[j]);
if(get(R[B[j]])-get(L[B[j]]-))
{
ans = max(ans,dep[B[j]]);
continue;
} work(B[j]);
} printf("%d\n",ans); for(int j=;j<=k1;j++) update(L[A[j]],-);
}
}
return ;
}
HDU 6031 Innumerable Ancestors的更多相关文章
- HDU6031 Innumerable Ancestors 倍增 - 题意详细概括 - 算法详解
去博客园看该题解 题目 查看原题 - HDU6031 Innumerable Ancestors 题目描述 有一棵有n个节点的有根树,根节点为1,其深度为1,现在有m个询问,每次询问给出两个集合A和B ...
- 【HDU 6031]】 Innumerable Ancestors
题意 有一棵有n个结点的树,这里有m个询问,每个询问给出两个非空的结点集合A和B,有些结点可能同时在这两个集合当中.你需要从A和B中分别选择一个节点x和y(可以是同一个结点)你的目标是使LCA(x,y ...
- HDU-6031 Innumerable Ancestors(二分+树上倍增)
题意 给一棵树,$m$次询问,每次询问给两个点集问从两个点集中各取一个点的$LCA$的最大深度. 思路 二分答案.对于某个二分过程中得到的$Mid$,如果可行则两个点集在$Mid$所在的深度存在公共的 ...
- HDU6031:Innumerable Ancestors(二分+倍增数组)
传送门 题意 n个点的图,有n-1条无向边,m个询问,每次询问 给出两个集合a和b,找到a的一个元素x,b的一个元素y,使得x和y的lca深度最大 分析 这道题如果直接暴力做,复杂度为O(mk1k2* ...
- HDU 1330 Nearest Common Ancestors(求两个点的近期公共祖先)
题目链接:id=1330">传送门 在线算法: #include <iostream> #include <cstdio> #include <cstri ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- hdu 4553 约会安排
约会安排 http://acm.hdu.edu.cn/showproblem.php?pid=4553 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- LCA(最近公共祖先)--tarjan离线算法 hdu 2586
HDU 2586 How far away ? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/ ...
- hdu图论题目分类
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
随机推荐
- vue 拦截器
拦截器:请求发送之前和请求返回之后的处理 使用:1.config---dev.env.js 开发环境配置 2. prod.env.js 生产 API:'http://www.wpdic.com' 3. ...
- 驱动学习5: zynq实现点亮led
驱动代码: #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> #i ...
- [应用篇]第五篇 JSTL之fmt标签日期和数字格式化
fmt标签个人用的比较少,但是我还是在这里简单的留一下笔记,也是算是学习了一下!这样方便你们课设的时候能用的上,要学会进步的学习,不要停留! 引入该标签库的方法为: <%@ taglib pre ...
- 桥接模式_NAT模式_仅主机模式_模型图.ziw
2017年1月12日, 星期四 桥接模式_NAT模式_仅主机模式_模型图 null
- 使用CSS3+JQuery打造自定义视频播放器
简介 HTML5的<video>标签已经被目前大多数主流浏览器所支持,包括还未正式发布的IE9也声明将支持<video>标签,利用浏览器原生特性嵌入视频有很多好处,所以很多开发 ...
- Hadoop面试链接
http://blog.csdn.net/haohaixingyun/article/details/52819457 http://blog.csdn.net/kingmax54212008/art ...
- XML & JSON---iOS-Apple苹果官方文档翻译
技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong //转载请注明出处--本文永久链接 ...
- spring-boot支持websocket
spring-boot本身对websocket提供了很好的支持,可以直接原生支持sockjs和stomp协议.百度搜了一些中文文档,虽然也能实现websocket,但是并没有直接使用spring-bo ...
- php中的转义函数
<?php parse_url 解析URL, 返回各组成部分 urlencode/urldecode url编码/解码 htmlentities 将字符串转化为html实体 htmlentiti ...
- SPI最大传输速率【转】
转自:https://www.silabs.com/community/mcu/8-bit/knowledge-base.entry.html/2017/01/13/spi_-asc0 问题 SPI作 ...