lightoj-1128-Greatest Parent(二分+LCA)
首先我要实力吐槽这个lightoj
它给我的注册密码藏在不为人所见的地方
注册注册了10多分钟
qwq
----------------------------------------------------------------
其次我要再吐槽一下这个难懂的题目
全英文emm...
百度翻译都救不了我
(我画图花半天,才懂emm...)
--------------------------------------------------------------
好的
我还是先解释一下题目吧
最最最一开始给你一个t
一共要整t次(t个不同的树)
每次的根节点的编号都为0
先给你2个数n、m
n个节点的树
m次询问
接下来的n-1行
第i行(1 <= i <= n-1)也有两个数x,y
x为i点的父节点的编号
y为i点的权值
再接下来的m行为m次询问
每行也有两个数x,y
每次查询x的父节点中,权值大于或等于y,离x最远的节点,输出它的编号
----------------------------------------------------------------------------------------------------------
基于倍增LCA思想上又用了二分
和倍增LCA一样
首先需要预处理出来fa[ ][ ]数组
于是就开始二分找到最深的节点
---------------------------------------------------------------------------------------------------------
#include<cstdio>
#include<cstring>
#define N 500100
using namespace std; int n,m,dn[N],fa[N][],dq,last,t,tt; inline int lca(int l,int r)
{
last--;
if(l == r || dn[l] >= dq && dn[fa[l][]] < dq)
return l;
while((fa[l][last] == -) || dn[fa[l][last]] < dn[r])
last--;
if(dn[fa[l][last]] < dq)
return lca(l,fa[l][last]);
else if(dn[fa[l][last]] > dq)
return lca(fa[l][last],r);
return fa[l][last];
} int main()
{
int t;
scanf("%d",&t);
int tt = t;
while(t--)
{
memset(fa,-,sizeof(fa));
scanf("%d%d",&n,&m);
for(int i = ; i < n; i++)
{
int x ,y;
scanf("%d%d",&x,&y);
dn[i] = y;
fa[i][] = x;
}
dn[] = ;
printf("Case %d:\n",tt - t); for(int i = ; i < n; i++)
{
for(int j=; j <= ; j++)
{
if(fa[i][j - ] == -)
continue;//超出深度
fa[i][j] = fa[fa[i][j-]][j - ];
}
} for(int i = ; i <= m; i++)
{
last = ;
int x;
scanf("%d%d",&x,&dq);
printf("%d\n",lca(x,));
}
}
return ;
}
lightoj-1128-Greatest Parent(二分+LCA)的更多相关文章
- Lightoj 1128 - Greatest Parent
Gate 倍增模板,在一个严格小根堆中,给定$x,y$,求$x$的祖先中$≥y$的最高点. 注意清零 #include<cstdio> #include<iostream> # ...
- NOIP2015 运输计划(二分+LCA+差分)
4326: NOIP2015 运输计划 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 308 Solved: 208[Submit][Status] ...
- HDU 3830 Checkers(二分+lca)
Description Little X, Little Y and Little Z are playing checkers when Little Y is annoyed. So he wan ...
- 1128 - Greatest Parent---LightOj(LCA+离线算法)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1128 给你一颗树,树的每个节点都有一个权值,树根是节点0,权值为1,树中每个节点的权值 ...
- bzoj4326 树链剖分 + 线段树 // 二分 lca + 树上差分
https://www.lydsy.com/JudgeOnline/problem.php?id=4326 题意:N个点的树上给M条树链,问去掉一条边的权值之后所有树链长度和的最大值最小是多少. 首先 ...
- P2680 运输计划[二分+LCA+树上差分]
题目描述 公元20442044 年,人类进入了宇宙纪元. L 国有 nn 个星球,还有 n-1n−1 条双向航道,每条航道建立在两个星球之间,这 n-1n−1 条航道连通了 LL 国的所有星球. 小 ...
- bzoj4326: NOIP2015 运输计划(二分+LCA+树上差分)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4326 题目大意:有一颗含有n个顶点的树,每两个点之间有一个边权,现在有m个运输计划,每个 ...
- lightoj.1048.Conquering Keokradong(二分 + 贪心)
Conquering Keokradong Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu ...
- hdu3830 (二分+LCA)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Checkers Time Limit: 2000/1000 MS (Java/O ...
随机推荐
- iOS----------The app's Info.plist must contain an NSPhotoLibraryUsageDescription key
This app has crashed because it attempted to access privacy-sensitive data without a usage descripti ...
- JMeter 中实现发送Java请求
JMeter 中实现发送Java请求 1. 步骤1 新建JAVA项目 File -> New -> Java Project 如上图,填写Project Name,然后Next,打开以J ...
- Android为TV端助力 Intent匹配action,category和data原则
1.当你在androidmanifest里面定义了一个或多个action时 你使用隐式意图其他activity或者service时,规定你隐式里面的action必须匹配XML中定义的action,可以 ...
- eclipse安装其他颜色主题包
eclipse安装其他颜色主题包: 用Help-Install new software安装的时候,work with的URL是 http://eclipse-color-theme.github.c ...
- 【爬虫】使用xpath与lxml移除特定标签
移除标签的两种方式 可以用xpath定位 for bad in html.xpath(".//table"): bad.getparent().remove(bad) 参考:htt ...
- 喜闻乐见-Android LaunchMode
launchMode,通俗点说,就是定义了Activity应该如何被launch的.那么这几种模式的区别以及应用场景,会有何不同呢?谷歌是基于什么原因设计这几种模式的呢?这几种模式背后的工作原理是什么 ...
- matlab练习程序(求向量间的旋转矩阵与四元数)
问题是这样,如果我们知道两个向量v1和v2,计算从v1转到v2的旋转矩阵和四元数,由于旋转矩阵和四元数可以互转,所以我们先计算四元数. 我们可以认为v1绕着向量u旋转θ角度到v2,u垂直于v1-v2 ...
- Scala路径依赖【内部类】
package big.data.analyse.scala.path_dependence /** * 路径依赖 * Created by zhen on 2018/12/24. */ // 定义外 ...
- C#-hello world(二)
1.C# 程序构成 命名空间(Namespace) 一个 class Class 方法 Class 属性 一个 Main 方法 语句(Statements)和 表达式(Expressions) 注释 ...
- x86服务器MCE(Machine Check Exception)问题
MCE现象 Intel在Pentium 4.Xenon和P6系列处理器中实现了机器检查(Machinecheck)架构,提供能够检测和报告硬件(机器)的错误机制,如系统总线错误.ECC错误.奇偶校验错 ...