思路:

并查集按秩合并维护出现时间。

最早连接时间就是树上连接最大值。

\(qwq\)我居然把路径压缩和按秩合并打到一个程序里了...OvO


#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000010;
struct edge {
int to;
int nxt;
int w;
}e[maxn << 1]; //struct asks{
// int x,y;
//}q[maxn<<1]; int n,m,q,cnt;
int x,y;
int rank[maxn];
int fa[maxn];
int head[maxn]; inline int find(int x) {
return x == fa[x] ? x : find(fa[x]);
} inline void Add_edge(int u,int v,int w) {
e[++cnt].w = w;
if(rank[u] > rank[v]) {
fa[v] = u;
e[cnt].to = u;
e[cnt].nxt = head[v];
head[v] = cnt;
}
else {
fa[u] = v;
e[cnt].to = v;
e[cnt].nxt = head[u];
head[u] = cnt;
if(rank[u] == rank[v]) rank[u] ++;
}
return;
} inline int query(int x,int y) {
int dx = 0;
int dy = 0;
int res = 0;
int l = x;
int r = y;
while(fa[l] != l) {
l = fa[l];
dx++;
}
while(fa[r] != r) {
r = fa[r];
dy ++;
}
if(dx < dy) {
swap(dx,dy);
swap(x,y);
}
while(dx > dy) {
res = max(e[head[x]].w,res);
x = fa[x];
dx --;
}
if(x == y) return res;
while(x != y) {
res = max(res,max(e[head[x]].w,e[head[y]].w));
x = fa[x];y = fa[y];
}
return res;
} int main () {
#ifdef ONLINE_JUDGE
freopen("pictionary.in","r",stdin);
freopen("pictionary.out","w",stdout);
#endif
scanf("%d %d %d",&n,&m,&q);
for(int i = 1;i <= n; ++i) {
fa[i] = i;
}
for(int i = 1;i <= m; ++i){
int d = m - i + 1;
for(int j = d*2;j <= n;j += d) {
Add_edge(find(d),find(j),i);
//cout<<d << ' '<< j<<endl;
}
}
for(int i = 1;i <= q; ++i) {
scanf("%d %d",&x,&y);
printf("%d\n",query(x,y));
}
return 0; }

[JZOJ 5782] 城市猎人的更多相关文章

  1. [jzoj 5782]【NOIP提高A组模拟2018.8.8】 城市猎人 (并查集按秩合并+复杂度分析)

    传送门 Description 有n个城市,标号为1到n,修建道路花费m天,第i天时,若gcd(a,b)=m-i+1,则标号为a的城市和标号为b的城市会建好一条直接相连的道路,有多次询问,每次询问某两 ...

  2. HDU 5782 Cycle(KMP+Hash)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5782 [题目大意] 给出两个字符串,判断他们每一个前缀是否循环同构,循环同构的意思就是,字符串首位 ...

  3. (jzoj snow的追寻)线段树维护树的直径

    jzoj snow的追寻 DFS序上搞 合并暴力和,记录最长链和当前最远点,距离跑LCA # include <stdio.h> # include <stdlib.h> # ...

  4. [jzoj]3506.【NOIP2013模拟11.4A组】善良的精灵(fairy)(深度优先生成树)

    Link https://jzoj.net/senior/#main/show/3506 Description 从前有一个善良的精灵. 一天,一个年轻人B找到她并请他预言他的未来.这个精灵透过他的水 ...

  5. [jzoj]3468.【NOIP2013模拟联考7】OSU!(osu)

    Link https://jzoj.net/senior/#main/show/3468 Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: ...

  6. [jzoj]5478.【NOIP2017提高组正式赛】列队

    Link https://jzoj.net/senior/#main/show/5478 Description Sylvia 是一个热爱学习的女孩子.       前段时间,Sylvia 参加了学校 ...

  7. [jzoj]1115.【HNOI2008】GT考试

    Link https://jzoj.net/senior/#main/show/1115 Description 申准备报名参加GT考试,准考证号为n位数X1X2X3...Xn-1Xn(0<=X ...

  8. [jzoj]2538.【NOIP2009TG】Hankson 的趣味题

    Link https://jzoj.net/senior/#main/show/2538 Description Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫H ...

  9. [jzoj]4216.【NOIP2015模拟9.12】平方和

    Link https://jzoj.net/senior/#main/show/4216 Description 给出一个N个整数构成的序列,有M次操作,每次操作有一下三种: ①Insert Y X, ...

随机推荐

  1. Java位运算总结

    关于位运算,以前也见过,搜过,当时会用了,过后就忘了,今天好好学习一遍,然后整理一下. Java中的位运算,涉及到计算机的二进制,位用bit表示,1Byte=8bit,根据各种基本数据类型占用的字节空 ...

  2. php 使用fseek指针读取大文件日志

    function text($fp,$n,$b=5) { if($n>0){ $p = $n+1; $lines = array(); while(count($lines)< =$n){ ...

  3. NX二次开发-UFUN拾取草图尺寸对话框UF_UI_select_sketch_dimensions

    #include <uf.h> #include <uf_ui.h> #include <uf_sket.h> UF_initialize(); //拾取草图尺寸对 ...

  4. HDU5923-Prediction-有继承味道的并查集

    目录 目录 思路: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 目录 题意:传送门  原题目描述在最下面.  有一个n个节点m条边的无向图和一个m个节点的有根树(根为1).树上每 ...

  5. 10.RabbitMQ Fanout类型交换机

    Fanout类型交换机忽略Routing Key,它将消息传递到所有与它绑定的队列上.       Producer.java package com.test.fanout;   import co ...

  6. MFC-按行读取TXT数据

    TXT中数据格式如下: 1 23 4 0 4 10 …… 要实现的功能是:定义一个函数,每次调用时从TXT文档中读一个整数 ,赋值给变量.同时,文件位置向下移动一行,以便下次调用时读取下一行的数据. ...

  7. 制作windows puppet openstack镜像

    由于电信需要远程部署软件,拟使用puppet进行远程服务管理 前提 windows系统已经安装 windows已经安装virtio driver 远程桌面开启,最好关闭防火墙 设置MTU 在没有安装c ...

  8. sklearn 调用逻辑回归函数训练数据时出现 “unknown label type:unknown”

    problemsolution:

  9. 分布式存储glusterfs

    什么是glusterfs? Glusterfs是一个开源分布式文件系统,具有强大的横向扩展能力,可支持数PB存储容量的数干客户端,通过网络互联成一个并行的网络文件系统.具有可扩展性.高性能.高可用性等 ...

  10. grep 的一些常用用法

    打印匹配到的上下5行 grep -C 5 'root' /etc/passwd            上下5行 grep -A 5 'root' /etc/passwd            afte ...