P3224 [HNOI2012]永无乡 题解

题意概括

有若干集合,每个集合最初包含一个值,和一个编号1~n。两个操作:合并两个集合,查询包含值x的集合中第k大值最初的集合编号。

维护集合之间关系显然用并查集,但怎么处理询问,如果只是问最大值,那么显然可以用线段树把最大值存在并查集的祖先上,当然线段树也行。但这里问的是第k大。主席树?主席树是用来处理区间第k大的,而这里每棵树显然储存一整个集合(由多个小集合合并来的)的信息,我们并不关心这个集合内的区间问题,主席树便有点大材小用。所以,得出结论:用并查集和值域(权值)线段树合并。

你的线段树本来就能合并,那并查集是干嘛的呢?我们每次合并是取出x集合和y集合对应的A树和B树,并将B树的信息放到A上,就像这样:A B=>A+B B 如果是 A B=>A+B A+B或A B C(=A+B) 空间势必会炸。若不用并查集我们在查询集合y时,可能拿到的rt[y]树y的根就可能是 A B=>A+B B 中的那个B的而不是A+B的。用了并查集先把 f[y]=x 这样 rt[f[y] 就是 A+B 的根了。(不知不觉写了好多)

其实实现很简单,但对于不熟悉值域线段树和线段树合并的人就不容易了。

先放这道题里涉及值域线段树的代码(代码总是比人话好理解):

AC代码

后来发现这道题还有更优的平衡树解法,但这个做法应该是码量最少的了,这也说明了值域线段树可以实现一些普通平衡树的操作,但不能完全替代。

Original: https://www.cnblogs.com/29taorz/p/15373997.html
Author: T_X蒻
Title: P3224 [HNOI2012]永无乡 题解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/643459/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • mysql

    基础篇 通用语法及分类 DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段) DML: 数据操作语言,用来对数据库表中的数据进行增删改 DQL: 数据查询语言,用来查询数…

    技术杂谈 2023年7月25日
    063
  • 算法情缘

    “程序猿与算法。是一个永恒的话题。不管在哪个论坛。仅仅要出现此类主题的帖子,一定会看到两种针锋相对的观点的”激烈碰撞”,事实上泡过论坛的人都知道…

    技术杂谈 2023年5月31日
    0105
  • java如何调用本地扬声器

    博主的毕设系统在做一个餐厅的点餐管理系统,在记性移动端页面开发的时候突发奇想做一个呼叫服务员,扬声器发声的一个功能类似于:” 工作人员请注意,桌号8001顾客正在寻求帮…

    技术杂谈 2023年7月24日
    066
  • 关于工资倒挂

    工资倒挂是指「新员工能力不如老员工,工资却高过老员工」。 如果你是上述老员工 你会觉得不爽,因为不公平。但在多数情况下,其实这件事并不坏: 你打算离职 从新员工工资来看, 你的市场…

    技术杂谈 2023年7月11日
    081
  • 使用react全家桶制作博客后台管理系统

    前面的话 笔者在做一个完整的博客上线项目,包括前台、后台、后端接口和服务器配置。本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基于react全家桶(Rea…

    技术杂谈 2023年5月31日
    0118
  • Hadoop(一)Hadoop核心架构与安装

    Hadoop是什么 大白话,Hadoop是个存储数据,计算数据的分布式框架。核心组件是HDFS、MapReduce、Yarn。 HDFS:分布式存储 MapReduce:分布式计算…

    技术杂谈 2023年7月24日
    079
  • c++多继承多态

    C++多继承多态的实现 如果一个类中存在虚函数,在声明类的对象时,编译器就会给该对象生成一个虚函数指针,该虚函数指针指向该类对应的虚函数表。多态的实现是因为使用了一种动态绑定的机制…

    技术杂谈 2023年6月21日
    089
  • 去掉烦人的:要恢复页面吗?Chrome未正确关闭

    1、将 sudo chmod 444 /home/username/.config/chromium/Default/Preferences文件权限设置读权限。 2、使用 sudo…

    技术杂谈 2023年5月31日
    0100
  • 使用python的turtle库画一个冰墩墩

    先看效果图 设置一个画布 画左手和手内 画轮廓和其他部分 画细节(眼睛、鼻子、嘴巴等) 画头部彩虹 画五环标志 最后(别忘记还有一个结束) 先看效果图 设置一个画布 点击查看代码 …

    技术杂谈 2023年7月25日
    068
  • 一文聊透 Netty IO 事件的编排利器 pipeline | 详解所有 IO 事件的触发时机以及传播路径

    欢迎关注公众号:bin的技术小屋,本文图片加载不出来的话可查看公众号原文 本系列Netty源码解析文章基于 4.1.56.Final版本 1. 前文回顾 在前边的系列文章中,笔者为…

    技术杂谈 2023年7月11日
    070
  • Ribbon、Feign和OpenFeign的区别

    RibbonRibbon 是 Netflix开源的基于HTTP和TCP等协议负载均衡组件Ribbon 可以用来做客户端负载均衡,调用注册中心的服务Ribbon的使用需要代码里手动调…

    技术杂谈 2023年5月31日
    097
  • 虚拟环境搭建

    虚拟环境搭建 我们进行开发的时候虚拟环境搭建尤为重要,我们如果需要的python解释器模块版本不一样可以采用这个办法 pycharm中搭建 命令创建虚拟环境 比如centos没有图…

    技术杂谈 2023年6月21日
    092
  • 数据库持久化+JDBC数据库连接

    数据持久化就是 将内存中的数据模型转换为存储模型,以及 将存储模型转换为内存中的数据模型的统称。数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。 …

    技术杂谈 2023年6月21日
    072
  • cocos creator入门

    前面的话 Cocos Creator 是一个完整的游戏开发解决方案,包括了 cocos2d-x 引擎的 JavaScript 实现,以及快速开发游戏所需要的各种图形界面工具。Coc…

    技术杂谈 2023年5月30日
    081
  • Css3图片阴影效果_Css3相册阴影效果(二)

    一、Css3图片阴影效果_Css3相册阴影效果(二) html代码: DOCTYPE html> <html lang="en"> <h…

    技术杂谈 2023年6月1日
    092
  • iptables防火墙原理详解

    Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址伪装、透明…

    技术杂谈 2023年5月31日
    0112
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球