这道题我们整个机房讨论将近半个小时没有出结果,算法导论都翻了。
突然,有一个同学用十分暴力的并查集A了,于是大家兴奋地都打了暴力。

Sample Input

5 9

0 1 4

1 2 5

0 2 4

0 3 4

1 3 1

0 7 0

0 6 1

0 1 6

1 2 6

Sample Output

0

3

5
我一开始想暴力,直接建树一个一个跳,觉得肯定不对。便觉得没有头绪。后来有一位同学A了,还真是这么暴力!
什么,你说如何快速查询一个点到LCA的最后一个被添加的边?
打LCT?Orz,反正我不打。我们就这么暴力的一个一个跳!
复杂度如何保证?我们可以合并的时候按秩合并,这样深度只有 l o g ( n ) log(n) log(n),暴力跳的时间复杂度自然就只有 O ( l o g ( n ) ) O(log(n)) O(log(n))了!想想就很酷。
蒟蒻代码供嘲讽

#include<cstdio>using namespace std;const int N=500010;int fa[N], v[N], depth[N], n, m, cnt;
bool vis[N];int find(int x, bool r) {vis[x]=r;if(fa[x]==x) return x;return find(fa[x], r);
}inline int max(int a, int b) {return a>b?a:b;}
inline void swap(int &a, int &b) {int t=a;a=b;b=t;}inline int solve(int x, int y) {int fy=find(y, 0), fx=find(x, 1);if(fx!=fy) {find(x, 0); return 0;}int lca=y, ans=0;while(!vis[lca]) ans=max(ans, v[lca]), lca=fa[lca];find(x, 0);while(x!=lca) ans=max(ans, v[x]), x=fa[x];return ans;
}inline void merge(int x, int y, int cnt) {int fx=find(x, 0), fy=find(y, 0);if(fx==fy) return;if(depth[fx]<depth[fy]) swap(fx, fy);fa[fy]=fx, v[fy]=cnt;if(depth[fx]==depth[fy]) depth[fx]++;
}int main() {scanf("%d%d", &n, &m);int last=0;for(int i=1; i<=n; i++) fa[i]=i, depth[i]=1;for(int i=1; i<=m; i++) {int flag, x, y;scanf("%d%d%d", &flag, &x, &y);x^=last, y^=last;if(!flag) merge(x, y, ++cnt);else printf("%d\n", last=solve(x, y));}
}

NOIP模拟系列 [BZOJ4668]冷战相关推荐

  1. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

  2. BZOJ4668: 冷战 [并查集 按秩合并]

    BZOJ4668: 冷战 题意: 给定 n 个点的图.动态的往图中加边,并且询问某两个点最早什 么时候联通,强制在线. 还可以这样乱搞 并查集按秩合并的好处: 深度不会超过\(O(\log n)\) ...

  3. 【noip模拟赛4】Matrix67的派对 暴力dfs

    [noip模拟赛4]Matrix67的派对 描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们安排 ...

  4. 【HHHOJ】NOIP模拟赛 捌 解题报告

    点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...

  5. 闵梓轩大佬のnoip模拟题D1 总结 2017/10/26

    背景 题目概括 T1 题面 分析 90分算法 满分算法 T2 题面 分析 部分分算法 满分算法 满分代码 T3 题面 分析 代码 总结 背景 这道题目是去年的金牌大佬闵梓轩在一年前出的一套noip模拟 ...

  6. 20211229[按秩合并并查集 最小生成树][BZOJ4668]冷战

    20211229[按秩合并并查集.最小生成树][BZOJ4668]冷战 题意:给定N点,动态加边与询问两点最早是哪条边开始连通,强制在线 首先如果离线的话可以直接跑最小生成树,不过代码不好处理. 当然 ...

  7. jyzy noip模拟赛5.22-2

    不知道哪来的题 jyzy noip模拟赛5.22-2 样例输入 1 2 3 4 样例输出 0.200000000000000 数据 |a|,|b|,|c|,|d|<=1e9 很多大佬迅速想到二分 ...

  8. NOIP模拟赛csy2021/10/30

    NOIP模拟赛csy2021/10/30 比赛时间规划 赛后反思与总结 这..总的来说感觉打的很不好,根本没有状态,有一部分原因是今天来晚了,太慌,更多的还是这次题感觉很难o(╥﹏╥)o 比赛时间规划 ...

  9. NOIP模拟(10.22)T2 杆子的排列

    杆子的排列 题目背景: 10.22 NOIP模拟作业T2 分析:DP 定义状态dp[i][j][k]表示,目前枚举到第i大的数(即n - i + 1)那么显然如果这一个数放在左边,可以在左边被看到,放 ...

最新文章

  1. 攻击面管理预防网络攻击原理?
  2. Expected a default value of type Tensor on parameter residual:
  3. 菜鸟学习Spring——60s利用JoinPoint获取參数的值和方法名称
  4. ASP.NET状态管理
  5. jquery event 封装的源源分析
  6. SAP WebIDE编辑器的主题设置
  7. 【C++grammar】名字隐藏与重定义
  8. 百度统计 java 实现思路_211本+985硕+计算机专业投面百度,坐等一周迎来三面,已拿offer...
  9. JAVA实现MD5算法、SHA1算法和SHA256算法
  10. android audiomixer,Android多媒体:AudioMixer
  11. IE浏览器无法查看源文件的8大原因
  12. jacob转pdf linux,Java 使用jacob实现doc转pdf(附带其他方法分析)
  13. 55-硅谷课堂1(项目概述+MyBatisPlus使用+搭建项目环境+开发讲师管理接口)
  14. MAC表、ARP缓存表、路由表以及端口映射NAT
  15. 奔向光明阿波罗(5)
  16. 怎么让照片里的人嘴巴动起来_让嘴巴动起来的制作方法
  17. 什么是 Web安全?
  18. 机器学习PAI实现精细化营销
  19. 【Redis 反序列化报错】 Cannot construct instance of `com.vt.common.Result` (no Creators, like default constr
  20. 计算机科学与教育,计算机教育与计算机科学技术

热门文章

  1. pd.read_excel
  2. 看了就会的浏览器帧原理
  3. 中国最黑的十三个旅游景点
  4. MongoDB 日志管理
  5. Linux下移动硬盘,创建windows,ntfs分区并挂载
  6. 数字图像处理总结(四)
  7. 谷粒商城二十订单服务
  8. Guava学习笔记:Google Guava 类库简介
  9. 如何利用电脑将文件刻录到光盘里面
  10. 基于OpenCV的视频场景切割神器