思路:

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

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

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


  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int maxn = 1000010;
  4. struct edge {
  5. int to;
  6. int nxt;
  7. int w;
  8. }e[maxn << 1];
  9. //struct asks{
  10. // int x,y;
  11. //}q[maxn<<1];
  12. int n,m,q,cnt;
  13. int x,y;
  14. int rank[maxn];
  15. int fa[maxn];
  16. int head[maxn];
  17. inline int find(int x) {
  18. return x == fa[x] ? x : find(fa[x]);
  19. }
  20. inline void Add_edge(int u,int v,int w) {
  21. e[++cnt].w = w;
  22. if(rank[u] > rank[v]) {
  23. fa[v] = u;
  24. e[cnt].to = u;
  25. e[cnt].nxt = head[v];
  26. head[v] = cnt;
  27. }
  28. else {
  29. fa[u] = v;
  30. e[cnt].to = v;
  31. e[cnt].nxt = head[u];
  32. head[u] = cnt;
  33. if(rank[u] == rank[v]) rank[u] ++;
  34. }
  35. return;
  36. }
  37. inline int query(int x,int y) {
  38. int dx = 0;
  39. int dy = 0;
  40. int res = 0;
  41. int l = x;
  42. int r = y;
  43. while(fa[l] != l) {
  44. l = fa[l];
  45. dx++;
  46. }
  47. while(fa[r] != r) {
  48. r = fa[r];
  49. dy ++;
  50. }
  51. if(dx < dy) {
  52. swap(dx,dy);
  53. swap(x,y);
  54. }
  55. while(dx > dy) {
  56. res = max(e[head[x]].w,res);
  57. x = fa[x];
  58. dx --;
  59. }
  60. if(x == y) return res;
  61. while(x != y) {
  62. res = max(res,max(e[head[x]].w,e[head[y]].w));
  63. x = fa[x];y = fa[y];
  64. }
  65. return res;
  66. }
  67. int main () {
  68. #ifdef ONLINE_JUDGE
  69. freopen("pictionary.in","r",stdin);
  70. freopen("pictionary.out","w",stdout);
  71. #endif
  72. scanf("%d %d %d",&n,&m,&q);
  73. for(int i = 1;i <= n; ++i) {
  74. fa[i] = i;
  75. }
  76. for(int i = 1;i <= m; ++i){
  77. int d = m - i + 1;
  78. for(int j = d*2;j <= n;j += d) {
  79. Add_edge(find(d),find(j),i);
  80. //cout<<d << ' '<< j<<endl;
  81. }
  82. }
  83. for(int i = 1;i <= q; ++i) {
  84. scanf("%d %d",&x,&y);
  85. printf("%d\n",query(x,y));
  86. }
  87. return 0;
  88. }

[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. Yacc - 一个生成 LALR(1) 文法分析器的程序

    SYNOPSIS 总览 yacc [ -dlrtv ] [ -b file_prefix ] [ -p symbol_prefix ] filename DESCRIPTION 描述 Yacc 从 f ...

  2. PC端写的API接口和手机端APP联合调试

    一.遇到问题的情况:项目框架:asp.net MVC5 ,写的给手机端调用的API接口. 二.自己在本地 IIS上部署项目,在手机端的请求服务器上把地址和端口换上本地部署的,如图所示 三.用管理员的身 ...

  3. cut sort uniq wc 一 文本处理工具

    cut cut是一个选取命令,就是将一段数据经过分析,取出我们想要的. 一般来说,选取信息通常是针对"行"来进行分析的,并不是整篇信息分析的. -c : 以字符为单位进行分割. c ...

  4. 【NOI2019模拟2019.7.4】朝夕相处 (动态规划+BM)

    Description: 题解: 这种东西肯定是burnside引理: \(\sum置换后不动点数 \over |置换数|\) 一般来说,是枚举置换\(i\),则\(对所有x,满足a[x+i]=a[i ...

  5. 【集合!】 20140416 && 20140417集训 总结

    mobius的奇怪演绎 当我第一眼看见题目中出现mobius的时候,我唯一想到的就是某科学家对于n维空间的阐述与思考,同时还提出了一个mobius环.而这道题中的环就是mobius环咯.不过其实这是一 ...

  6. NX二次开发-UFUN创建基准平面UF_MODL_create_plane

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(); //创建基准平面 ] = {0.0, 0.0, ...

  7. 27. USART, Universal synchronous asynchronous receiver transmitter

    27.1 USART introduction 通用同步异步接收发射机(USART)对需要NRZ异步串行数据格式行业标准的外部设备,提供了一个灵活的全双工数据交换的方法.USART使用分数波特率生成器 ...

  8. chomp

    用来除去最后的换行等空白字符. 例程: #!/usr/bin/perl #chomp.pl use warnings; use strict; print "Input a string & ...

  9. CentOS部署软件and so on……

    CentOS各版本系统下载 CentOS下载地址:http://archive.kernel.org/centos-vault/ CentOS安装python3.7.2: 1.安装依赖包 yum in ...

  10. postgresql-创建主键自增的表

    之前一直用的mysql,这个也基本上是主流,主键自增是很多建表规范中的硬性要求,不过这两种数据库主键自增的区别还是很大的 通常navicat中对mysql 主键自增直接客户端指定即可,不过对PG貌似不 ...