传送门

首先我要实力吐槽这个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)的更多相关文章

  1. Lightoj 1128 - Greatest Parent

    Gate 倍增模板,在一个严格小根堆中,给定$x,y$,求$x$的祖先中$≥y$的最高点. 注意清零 #include<cstdio> #include<iostream> # ...

  2. NOIP2015 运输计划(二分+LCA+差分)

    4326: NOIP2015 运输计划 Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 308  Solved: 208[Submit][Status] ...

  3. HDU 3830 Checkers(二分+lca)

    Description Little X, Little Y and Little Z are playing checkers when Little Y is annoyed. So he wan ...

  4. 1128 - Greatest Parent---LightOj(LCA+离线算法)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1128 给你一颗树,树的每个节点都有一个权值,树根是节点0,权值为1,树中每个节点的权值 ...

  5. bzoj4326 树链剖分 + 线段树 // 二分 lca + 树上差分

    https://www.lydsy.com/JudgeOnline/problem.php?id=4326 题意:N个点的树上给M条树链,问去掉一条边的权值之后所有树链长度和的最大值最小是多少. 首先 ...

  6. P2680 运输计划[二分+LCA+树上差分]

    题目描述 公元20442044 年,人类进入了宇宙纪元. L 国有 nn 个星球,还有 n-1n−1 条双向航道,每条航道建立在两个星球之间,这 n-1n−1 条航道连通了 LL 国的所有星球. 小 ...

  7. bzoj4326: NOIP2015 运输计划(二分+LCA+树上差分)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4326 题目大意:有一颗含有n个顶点的树,每两个点之间有一个边权,现在有m个运输计划,每个 ...

  8. lightoj.1048.Conquering Keokradong(二分 + 贪心)

    Conquering Keokradong Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...

  9. hdu3830 (二分+LCA)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Checkers Time Limit: 2000/1000 MS (Java/O ...

随机推荐

  1. 微信小程序调用地图选取位置后返回信息

    先看一下wxml的代码,绑定个事件! <view class='carpool_data_all'> <view class='aa'> <text>*出发地< ...

  2. JavaScript中的原型链和继承

    理解原型链 在 JavaScript 的世界中,函数是一等公民. 上面这句话在很多地方都看到过.用我自己的话来理解就是:函数既当爹又当妈."当爹"是因为我们用函数去处理各种&quo ...

  3. ELK 处理 Percona 审计日志(填坑)

    前提 1.有强烈的审计需求. 2.能允许10%-15%左右的性能损失. 3.有强烈的对数据库操作实时查看需求(一般都是为了领导要求). Logstash 比较坑的配置   1 2 3 4 5 6 7 ...

  4. MySQL服务使用

    MySQL服务使用 1. 启动服务 启动服务: service mysql start 或者 sudo /etc/init.d/mysql start 2. 关闭服务 关闭服务: service my ...

  5. Django中间件的使用

    Django中间件的使用 中间件(middleware) 中间件应用于request与服务端之间和服务端与response之间,客户端发起请求到服务端接收可以通过中间件,服务端返回响应与客户端接收响应 ...

  6. array_walk函数与call_user_func_array函数

    一, php手册的解释: call_user_func_array - 调用回调函数,并把一个数组参数作为回调函数的参数  说明: mixed  call_user_func_array  ( cal ...

  7. linux c 语言之--fseek(),fseeko(),fseeko64()讲解 (转载)

    转载:http://blog.csdn.net/lemoncyb/article/details/16841317 fseek() 函数讲解: 函数定义: int fseek(FILE *stream ...

  8. LeetCode算法题-Range Sum Query Immutable(Java实现)

    这是悦乐书的第204次更新,第214篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第70题(顺位题号是303).给定整数数组nums,找到索引i和j(i≤j)之间的元素之 ...

  9. LeetCode算法题-Excel Sheet Column Title(Java实现)

    这是悦乐书的第180次更新,第182篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第39题(顺位题号是168).给定正整数,返回Excel工作表中显示的相应列标题.例如: ...

  10. 【算法】LeetCode算法题-Longest Common Prefix

    这是悦乐书的第146次更新,第148篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第5题(顺位题号是14),给定一个随机的字符串数组,查找这些字符串元素的公共前缀字符串, ...