ICode9

精准搜索请尝试: 精确搜索
  • P3224 [HNOI2012]永无乡(合并线段树)2021-11-07 19:31:34

    Jisoo 这是一种叫线段树合并的东西。 为了简化,我们需要动态开点。 并且一开始为每一个节点建一个线段树,当然是动态开点的 然后合并就行了,相同的线段树节点加起来,只有一个有的就返回另一个 记一个根,并且并查集一下。 #include<cstdio> #include<iostream> #include<cstring> #inclu

  • P3224 [HNOI2012]永无乡 题解2021-10-06 20:01:45

    P3224 [HNOI2012]永无乡 题解 题意概括 有若干集合,每个集合最初包含一个值,和一个编号1~n。两个操作:合并两个集合,查询包含值x的集合中第k大值最初的集合编号。 思路 维护集合之间关系显然用并查集,但怎么处理询问,如果只是问最大值,那么显然可以用线段树把最大值存在并查集的祖先上,当

  • 题解 P3224 [HNOI2012]永无乡2021-08-12 22:36:24

    题目链接 前置知识:kruskal 重构树,主席树 来讲一种目前题解区里没有,使用 kruskal 重构树和主席树,且时间复杂度为一个 log 的做法。 题目大意是给定一张点数为 \(n\)​​ ,初始边数为 \(m\)​ 的无向图,图中每个点有一个权值,然后有 \(q\)​ 个操作,每个操作可能是询问与点 \(x\) 联通的

  • P3224 [HNOI2012]永无乡(线段树合并)2021-08-06 20:04:05

    支持加边和询问连通块第k大点权。 线段树合并即可。 //线段树合并 //每次合并两个连通块的权值线段树 //询问第k大 #include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; const int M=maxn*100; int c[M],lson[M],rson[M],T[maxn],tot; void pushup (int newRo

  • P3224 [HNOI2012]永无乡 并查集+线段树合并2021-07-28 18:30:58

    原题链接:https://www.luogu.com.cn/problem/P3224 目录 题意分析Code 题意 分析 和主席树操作有些像,查询区间K大,但这题又带上了修改,因此我们考虑用线段树合并。直接开n个权值线段树,然后用并查集维护当前连通块。由于这题比较模板,就不多解释了。 Code #include <bits/std

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有