Lightoj 1128 - Greatest Parent
倍增模板,在一个严格小根堆中,给定$x,y$,求$x$的祖先中$≥y$的最高点。
注意清零
#include<cstdio>
#include<iostream>
#include<cstring>
#define MogeKo qwq
using namespace std;
const int maxn = 1e5+;
int t,n,q,val[maxn],cnt;
int dpth[maxn],p[maxn][];
int to[maxn],head[maxn],nxt[maxn]; void add(int x,int y) {
to[++cnt] = y;
nxt[cnt] = head[x];
head[x] = cnt;
} void dfs(int x,int fa) {
dpth[x] = dpth[fa]+;
p[x][] = fa;
for(int i = ; (<<i)<=dpth[x]; i++)
p[x][i] = p[p[x][i-]][i-];
for(int i = head[x]; i; i = nxt[i]) {
if(to[i] == fa)continue;
dfs(to[i],x);
}
} int solve(int x,int y) {
for(int i = ; i >= ; i--) {
if(val[p[x][i]] >= y) x = p[x][i];
if(x== || val[x]==y)break;
}
return x;
} int main() {
scanf("%d",&t);
for(int j = ;j <= t;j++) {
printf("Case %d:\n",j);
memset(to,,sizeof(to));
memset(head,,sizeof(head));
memset(nxt,,sizeof(nxt));
memset(p,,sizeof(p));
cnt = ;
val[] = ;
dpth[] = ;
scanf("%d%d",&n,&q);
int x,y;
for(int i = ; i <= n-; i++) {
scanf("%d%d",&x,&y);
add(x,i);
val[i] = y;
}
dfs(,);
for(int i = ; i <= q; i++) {
scanf("%d%d",&x,&y);
printf("%d\n",solve(x,y));
}
}
return ;
}
Lightoj 1128 - Greatest Parent的更多相关文章
- 1128 - Greatest Parent---LightOj(LCA+离线算法)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1128 给你一颗树,树的每个节点都有一个权值,树根是节点0,权值为1,树中每个节点的权值 ...
- PHP中this,self,parent三个关键字
this,self,parent三个关键字从字面上比较好理解,分别是指这.自己.父亲. this是指向当前对象的指针(姑且用C里面的指针来看吧)self是指向当前类的指针parent是指向父类的指针( ...
- Android之RecyclerView的原生Bug-Inconsistency detected. Invalid view holder adapter positionViewHolder{a1bbfa3 position=2 id=-1, oldPos=-1, pLpos:-1 no parent}
今天在运行自己编写的App时,突然发现App在运行时闪退,然后就查看了Android Studio的Log,发现了这个错误,上网查了一下,才知道是RecyclerView的原生Bug,在数据更新时会出 ...
- git: fatal: Not a git repository (or any of the parent directories): .git
在看书 FlaskWeb开发:基于Python的Web应用开发实战 时,下载完源码后 git clone https://github.com/miguelgrinberg/flasky.git 试着 ...
- 关于js中window.location.href,location.href,parent.location.href,top.location.href的用法
"window.location.href"."location.href"是本页面跳转 "parent.location.href"是上一 ...
- 关于一个parent(),siblings()的小问题
今天发现一个小问题,现在也不知道到底是哪个梗在作祟,但是感觉是parent()和siblings()其中的一个. 我是想这样的根据输入的条件删选内容: demo: <!DOCTYPE html& ...
- 区间DP LightOJ 1422 Halloween Costumes
http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...
- jQuery通过parent()和parents()方法访问父级元素
<div class="inputGroup"> <p>2.您的最高学历是?</p> <label><input type=& ...
- MySQL主从复制中断,报“Error on master: message (format)='Cannot delete or update a parent row: a foreign key constraint fails' error code=1217” 错误
前几天,发现从库挂了,具体报错信息如下: 分析思路 1. 因为我采用的是选择性复制,只针对以下几个库进行复制: card,upay,deal,monitor,collect.所以,不太可能出现对于sa ...
随机推荐
- Linux rsync 两个目录镜像备份
rsync安装篇 rsync是一款配置简单,功能全面的安全备份软件,具体的功能介绍可以参考手册.这里和大家分享一下rsync在CentOS下的部署. 1.安装rsync,并通过xinetd管理rsyn ...
- [HTTP] tcp/ip详解 链路层 网络层 传输层 应用层
1.可以把七层协议简化成四层协议链路层 网络层 传输层 应用层 2.通过路由器连接的两个网络网络层ip提供的是一个逐跳协议,提供了一种不可靠的服务,中间有可能会丢传输层tcp在ip的基础上提供了可靠的 ...
- Docker 更新镜像
docker镜像如下: 今天在运行的容器内使用 apt-get update 命令进行更新时,发下很多404错误. Err http://archive.ubuntu.com wily-updates ...
- 【转】mysql数据库优化大全
数据库优化 sql语句优化 索引优化 加缓存 读写分离 分区 分布式数据库(垂直切分) 水平切分 MyISAM和InnoDB的区别: 1. InnoDB支持事务,MyISAM不支持,对于InnoDB每 ...
- Linux平台安装MongoDB及使用Docker安装MongoDB
一.Linux平台安装MongoDB MongoDB 提供了 linux 各发行版本 64 位的安装包,你可以在官网下载安装包. 下载地址:https://www.mongodb.com/downlo ...
- MySQL查询执行的基础——查询优化处理
查询的生命周期的下一步是将一个SQL转换成一个可执行计划,MySQL再按照这个计划和存储引擎进行交互 语法解析器和预处理 首先,MySQL通过关键词将SQL语句进行解析,并生成一颗对应的"解 ...
- excel函数2
1截取函数的应用 实例: 2.日期的年周月星期数据处理
- html中节点类型
常用的节点有元素节点.属性节点.文本节点.注释节点.文档节点 来看例子: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transition ...
- CSS3 calc实现滚动条出现页面不跳动
什么是calc()? calc()从字面我们可以把他理解为一个函数function.其实calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,用来指定元素的长度.比如说,你可 ...
- 微信小程序下拉刷新和上拉加载的实现
一: 下拉刷新 下拉刷新两个步骤就能实现. 1.在要实现下拉刷新的页面的json配置文件里面加上 "enablePullDownRefresh": true, //开启下拉刷新 & ...