洛谷-3377 【模板】左偏树(可并堆)

用矿卡P104-100在PVE 8.0.4上跑Ollama:保姆级显卡直通与驱动安装避坑指南 本文详细介绍了如何在PVE 8.0.4环境下通过显卡直通技术,利用矿卡P104-100高效部署本地大模型Ollama的全流程。从硬件配置、BIOS设置到驱动安装和性能调优,提供了保姆级的避坑指南和实战解决方案,特别针对矿卡无显示输出的特殊性进行了优化。 阅读详情

题目描述
如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作:
操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y个数已经被删除或第x和第y个数在用一个堆内,则无视此操作)
操作2: 2 x 输出第x个数所在的堆最小数,并将其删除(若第x个数已经被删除,则输出-1并无视删除操作)
输入输出格式
输入格式:
第一行包含两个正整数N、M,分别表示一开始小根堆的个数和接下来操作的个数。
第二行包含N个正整数,其中第i个正整数表示第i个小根堆初始时包含且仅包含的数。
接下来M行每行2个或3个正整数,表示一条操作,格式如下:
操作1 : 1 x y
操作2 : 2 x
输出格式:
输出包含若干行整数,分别依次对应每一个操作2所得的结果。

输入输出样例
输入样例#1:
5 5
1 5 4 2 3
1 1 5
1 2 5
2 2
1 4 2
2 2

输出样例#1:
1
2

说明
当堆里有多个最小值时,优先删除原序列的靠前的,否则会影响后续操作1导致WA。
时空限制:1000ms,128M
数据规模:
对于30%的数据:N<=10,M<=10
对于70%的数据:N<=1000,M<=1000
对于100%的数据:N<=100000,M<=100000

#include <cstdio>
#include <iostream>

#define MAXN 150010
#define swap my_swap
#define ls S[x].Son[0]
#define rs S[x].Son[1]

using namespace std ;
struct Tree{
    int dis, val, Son[2], rt ;
}S[MAXN] ; int N, T, A, B, C, i ;

inline int Merge(int x, int y) ; 
int my_swap(int &x, int &y){ x ^= y ^= x ^= y ;}
inline int Get(int x){ return S[x].rt == x ? x : S[x].rt = Get(S[x].rt) ; }
inline void Pop(int x){ S[x].val = -1, S[ls].rt = ls, S[rs].rt = rs, S[x].rt = Merge(ls, rs) ; }
inline int Merge(int x, int y){
    if (!x || !y) return x + y ; if (S[x].val > S[y].val || (S[x].val == S[y].val && x > y)) swap(x, y) ;
    rs = Merge(rs, y) ; if (S[ls].dis < S[rs].dis) swap(ls, rs) ; S[ls].rt = S[rs].rt = S[x].rt = x, S[x].dis = S[rs].dis + 1 ; return x ;
}
int main(){
    cin >> N >> T ; S[0].dis = -1 ;
    for (i = 1 ; i <= N ; ++ i) 
        S[i].rt = i, scanf("%d", &S[i].val) ; 
    for (i = 1 ; i <= T ; ++ i){
        scanf("%d%d", &A, &B) ;
        if (A == 1){
            scanf("%d", &C) ;
            if (S[B].val == -1 || S[C].val == -1) continue ;
            int f1 = Get(B), f2 = Get(C) ; if (f1 != f2) S[f1].rt = S[f2].rt = Merge(f1, f2) ;
        }
        else {
            if(S[B].val == -1) printf("-1\n") ;
            else printf("%d\n", S[Get(B)].val), Pop(Get(B)) ;
        }
    }
    return 0 ;
}
ROS2实战:构建模块化启动文件(launch file)以驱动复杂机器人系统 本文详细介绍了ROS2中构建模块化启动文件(launch file)的最佳实践,帮助开发者高效管理复杂机器人系统的节点启动。通过功能分解、参数化设计和嵌套启动等技术,实现批量管理、依赖控制和配置统一,显著提升系统稳定性和调试效率。文章包含实战代码示例和工程化建议,特别适合自动驾驶、物流机器人等场景应用。 阅读详情

相关推荐

Innovus时钟树综合CTS实战:从原理到signoff的完整指南

时钟树综合(CTS)是数字后端实现中保障同步电路时序收敛的核心环节,其本质是在物理层面构建低偏斜、可控延迟的全局时钟分发网络。它基于静态时序分析(STA)原理,通过平衡clock skew、insertion delay、transition time与功耗面积等多维约束,对抗工艺电压温度(PVT)变异带来的时序不确定性。技术价值在于支撑GHz级高频芯片的setup/hold签核,广泛应用于CPU、GPU、AI加速器等复杂SoC的Innovus后端流程。本文聚焦CTS在Innovus工具链中的工程落地,覆盖

weixin_28523493的博客 223

洛谷P3377--(数据结构--左偏树)

题意:合并堆及删除堆中最小元素。 思路:采用一般的二叉堆可以实现删除操作,但是要合并的话就会爆,因此引进了左偏树这个数据结构,可在logn时间内实现合并操作。 左偏树的性质: 1.堆的性质 2.左子节点的距离大于右子节点的距离 正是利用这些性质实现堆的快速合并。 代码如下: (其中并查集的路径压缩会破坏掉树的结构,因此在路径压缩后要将所有相邻节点的父节点都置为当前的根节点) #include&lt...

weixin_44756457的博客 233

C++五子棋人机对战

使用C++,开发五子棋人机对战,快速提升C++项目开发能力。

程序员Rock的博客 5万+

AcWing 2714:左偏树 ← 可并堆

左偏树的距离(dist)是其核心定义,用于保证左偏性质与合并效率。

hnjzsyjyj的专栏 1710

关于WPF PasswordBox 增加提示文案,请输入密码,亲测最快方案,改最少的代码!!!

关于WPF PasswordBox 增加提示文案,请输入密码,亲测最快方案,不需要像其他方案改任何PasswordBox的样式,直接加个texbox控件显示隐藏即可1.xaml,注意关键代码,样式之类可以不管 2.xaml.cs

鸣的博客 1542

双层优化入门(2)—基于yalmip的双层优化求解(附matlab代码)

​上一篇博客介绍了双层优化的基本原理和使用KKT条件求解双层优化的方法,这篇博客将介绍使用yalmip的双层优化问题的求解方法。 1.KKT函数 通过调用yalmip工具箱中的KKT函数,可以直接求出优化问题的KKT条件,省去自己手动写的步骤。 2.solvebilevel函数 solvebilevel是yalmip工具箱内置的求解双层优化问题的函数。也就是通过这个函数,不需要咱手动写KKT条件,也不需要使用KKT函数,直接把上、下层优化的目标函数、约束条件往里面一放,就能求出结果。 ​

配电网和matlab的博客 1万+

【洛谷P3377】【模板】左偏树(可并堆)

题目描述如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作:操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y个数已经被删除或第x和第y个数在用一个堆内,则无视此操作)操作2: 2 x 输出第x个数所在的堆最小数,并将其删除(若第x个数已经被删除,则输出-1并无视删除操作)输入输出格式输入格式: 第一行包含两个正整数N、M,分别表示一开始小根堆的个数和

wang_sj的博客 727

嵌入式充电协议深度解析:从QC到PD3.1的技术演进与实战应用

本文深入解析了从QC到PD3.1的嵌入式充电协议技术演进与实战应用。通过电压谈判、协议芯片设计、Type-C接口优化等关键技术,详细介绍了快充协议在嵌入式系统中的实现挑战与解决方案,包括兼容性测试、EMC问题处理及空间限制创新设计,为开发者提供了宝贵的实践经验。

weixin_29194817的博客 419

【洛谷】3377【模板】左偏树(可并堆)

题目传送门 作为一个合格的蒟蒻,我们当然在学每一种算法后都要去做一些和这种算法有关的模板题。 毫无疑问,这是一道左偏树的模板题。 伏地膜大佬,这位大佬对左偏树的解释十分到位。 左偏树就是在堆的基础上加上了距离的概念。 距离指的是每一个节点到离他最近的不满节点的距离。若一个节点的左儿子或右儿子为空,则该节点是一个不满节点。 左偏树有两个特殊的性质: 1.一个节点的左儿子的距

Chester King 1267

离散数学期末复习笔记【精华版】

文章目录前言一、????理逻辑1. 命题逻辑2. 等值演算3. 主合取范式、主析取范式4. 【题】推理证明5. 辖域、自由变元、约束变元二、????合1. 环和、环积,幂集,笛卡尔乘积三、 ????????关系1. 自反、对称、传递2&3. 合成运算,逆关系、闭包4. 哈斯图、上下界、偏序5. 等价关系、划分四、????1. 幺元(么元、单位元)、零元、逆元,半群、群、阿尔贝群、独异点、循环独异点2. 【题】由表判断3. 【题】证明五、????论1. 简单图、平凡图、多重图、子图、补图、出度、入度、

林大夕可的博客 17万+

OpenBCI脑电实验避坑指南:如何用Python准确捕捉P300信号

本文详细介绍了使用OpenBCI和Python进行P300脑电信号实验的避坑指南,包括电极贴放、信号采集、信号处理和数据分析等关键步骤。通过实战经验和代码示例,帮助研究者避开常见陷阱,提高P300信号捕捉的准确率,适用于脑机接口和神经科学研究。

weixin_30316097的博客 551

左偏树简介(洛谷P3377题解)

左偏树(Leftist Tree)是一种可并堆的实现。

forezxl的博客 492

Flowise智能调度系统设计与实现

本文深入探讨Flowise平台的智能调度系统设计与实现,包括调度模型、调度策略、调度优化、调度应用等方面。通过详细的设计方案和实现策略,帮助开发者构建智能的调度系统。本文详细介绍了Flowise平台的智能调度系统设计与实现,包括调度模型、调度策略、调度优化、调度应用等方面。通过详细的设计方案和实现策略,帮助开发者构建智能的调度系统。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1017

洛谷 P3377 【模板】左偏树(可并堆)

2019-06-01 题目: 洛谷 P3377 【模板】左偏树(可并堆): https://www.luogu.org/problemnew/show/P3377 题目描述 如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作: 操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y个数已经被删除或第x和第y个数在用一个堆内,则无视此操作) ...

weixin_30402085的博客 174

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

以洛谷 P3377 【模板】左偏树(可并堆) 为例的左偏树

洛谷链接: https://www.luogu.org/problem/P3377 定义 左偏树是一种可并堆的实现。左偏树是一棵二叉树,它的节点除了和二叉树的节点一样具有左右子树指针(left, right)外,还有两个属性: 键值和距离(英文文献中称为s-value)。键值用于比较节点的大小。 下面的是百度百科给出的距离的定义。如果想要严谨的可以参考下面的内容,我感性理解一下就是,没有两个儿子...

人生如戏 472

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

洛谷 P3377:[模板] 可并堆 1 ← 左偏树

左偏树是一种可合并的堆(也叫 “可并堆”),它在普通二叉堆(大根 / 小根堆)的基础上,增加了「快速合并两个堆」的能力,同时保证堆的性质(小根堆:父节点≤子节点;大根堆反之)。普通二叉堆合并两个堆的时间复杂度是 O(n),而左偏树能做到 O(logn),这是它的核心优势。

hnjzsyjyj的专栏 603

洛谷 P3377 【模板】左偏树(可并堆) 左偏树

https://www.luogu.com.cn/problem/P3377 题目描述 如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作: 操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y个数已经被删除或第x和第y个数在用一个堆内,则无视此操作) 操作2: 2 x 输出第x个数所在的堆最小数,并将其删除(若第x个数已经被删除,则输出-1并无视删除操...

xiji333的博客 319

[洛谷 P3377]【模板】左偏树(可并堆)

解析 论文:左偏树的特点及其应用 0. 吐槽 怀疑这题是并查集,,,找根有点烦 以前一直觉得很厉害的样纸,其实还是可以接受的(别和我说证明,不听) PS:已退役,过来划水 1. 笔记 核心:key(堆的性质), dis(左偏性质) 关键操作:合并;删除 左偏性质:保证 dis(lch)≥dis(rch)dis(lch) \geq dis(rch)dis(lch)≥dis(rch),其中dis(p)...

笑面蘑菇的博客 351

[洛谷P3377]【模板】左偏树(可并堆)

题目大意:给你n个小根堆,每个堆初始有一个元素。有两个操作:1. 把第x个数和第y个数所在的堆合并(如果第x个数或第y个数已经被删除or它们已经在同一个堆内则忽略)2. 输出第x个数所在堆的堆顶元素,并将这个堆顶元素弹出堆(如果第x个数不存在则输出-1)如果第$a_i$个数与第$a_j$个数相同,则比较i与j的大小。解题思路:可并堆嘛。话说随机化期望值还是蛮高的,于是随机堆+并查集水过。...

186

【洛谷】P3377 【模板】左偏树(可并堆)

个数所在的堆最小数,并将这个最小数删除(若有多个最小数,优先删除先输入的;个小根堆,每个堆包含且仅包含一个数。,分别表示一开始小根堆的个数和接下来操作的个数。输出包含若干行整数,分别依次对应每一个操作。个数在用一个堆内,则无视此操作)。个小根堆初始时包含且仅包含的数。,初始时小根堆中的所有数都在。个数所在的小根堆合并(若第。可以将删除了的点的距离值。个数已经被删除,则输出。第一行包含两个正整数。...

数学、算法爱好者的博客 267

洛谷 - P3377 - 【模板】左偏树(可并堆) - 左偏树 - 并查集

https://www.luogu.org/problemnew/show/P3377 左偏树+并查集 左偏树维护两个可合并的堆,并查集维护两个堆元素合并后可以找到正确的树根。 关键点在于删除一个堆的堆根的时候,需要把原来堆根的父指针指向新的堆根。这样并查集的性质就不会被破坏了。 #include<bits/stdc++.h> using namespace std; typedef ...

weixin_30315723的博客 83

洛谷P3377 【模板】左偏树(可并堆)

 P3377 【模板】左偏树(可并堆)1.6K通过3.8K提交题目提供者HansBug 站长团评测方式云端评测标签难度提高+/省选-时空限制1000ms / 128MB 提交  题解   提示:收藏到任务计划后,可在首页查看。最新讨论显示推荐的相关题目显示题目描述如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作:操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(...

qq_41510496的博客 252

【模板】左偏树 (模板题:洛谷P3377左偏树/可并堆)

题目描述 如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作: 操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y个数已经被删除或第x和第y个数在用一个堆内,则无视此操作) 操作2: 2 x 输出第x个数所在的堆最小数,并将其删除(若第x个数已经被删除,则输出-1并无视删除操作) 输入输出格式 输入格式: 第一行包含两个

Dance Of Faith 740

模板 可并堆【洛谷P3377】 【模板】左偏树(可并堆)

P3377 【模板】左偏树(可并堆) 如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作: 操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y个数已经被删除或第x和第y个数在用一个堆内,则无视此操作) 操作2: 2 x 输出第x个数所在的堆最小数,并将其删除(若第x个数已经被删除,则输出-1并无视删除操作) code: // luogu-ju...

weixin_30556161的博客 101

左偏树/斜堆/可并堆-洛谷P3377 【模板】左偏树(可并堆)

https://www.luogu.org/problem/show?pid=3377 我们知道二叉堆,就是优先队列,那个stl有的,Priority Queues; 这个建议大家去试试手写; 我们知道二叉堆合并很难,时间复杂度高; 那我们怎么搞呢,用更高级的数据结构–可并堆; 先自学一下这个 http://wenku.baidu.com/search?word=%CB%E3%B7%A8

我怎么这么菜的呢 490
上一篇: 洛谷-4781 【模板】拉格朗日插值
下一篇: 洛谷-1896 [SCOI2005]互不侵犯
mkopvec
博客等级 码龄8年 22粉丝 331原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值