Luogu1456 Monkey King

手把手教你用Apollo Dreamview调试自动驾驶感知模块(附数据包下载) 本文详细介绍了如何使用百度Apollo平台的Dreamview工具调试自动驾驶感知模块,包括环境配置、数据加载、感知问题定位和多传感器融合调试等关键步骤。通过实战案例和参数调整技巧,帮助开发者快速掌握自动驾驶感知模块的调试方法,提升开发效率。 阅读详情

原题链接:https://www.luogu.org/problemnew/show/P1456

Monkey King

题目描述

Once in a forest, there lived N aggressive monkeys. At the beginning, they each does things in its own way and none of them knows each other. But monkeys can’t avoid quarrelling, and it only happens between two monkeys who does not know each other. And when it happens, both the two monkeys will invite the strongest friend of them, and duel. Of course, after the duel, the two monkeys and all of there friends knows each other, and the quarrel above will no longer happens between these monkeys even if they have ever conflicted.

Assume that every money has a strongness value, which will be reduced to only half of the original after a duel(that is, 10 will be reduced to 5 and 5 will be reduced to 2).

And we also assume that every monkey knows himself. That is, when he is the strongest one in all of his friends, he himself will go to duel.

一开始有n只孤独的猴子,然后他们要打m次架,每次打架呢,都会拉上自己朋友最牛叉的出来跟别人打,打完之后战斗力就会减半,每次打完架就会成为朋友(正所谓不打不相识o(∩_∩)o )。问每次打完架之后那俩猴子最牛叉的朋友战斗力还有多少,若朋友打架就输出-1.

输入输出格式
输入格式:

There are several test cases, and each case consists of two parts.

First part: The first line contains an integer N(N<=100,000), which indicates the number of monkeys. And then N lines follows. There is one number on each line, indicating the strongness value of ith monkey(<=32768).

Second part: The first line contains an integer M(M<=100,000), which indicates there are M conflicts happened. And then M lines follows, each line of which contains two integers x and y, indicating that there is a conflict between the Xth monkey and Yth.

有多组数据

输出格式:

For each of the conflict, output -1 if the two monkeys know each other, otherwise output the strength value of the strongest monkey among all of its friends after the duel.

输入输出样例
输入样例#1:

5
20
16
10
10
4
5
2 3
3 4
3 5
4 5
1 5

输出样例#1:

8
5
5
-1
10

说明

题目可能有多组数据

题解

只需要几颗左偏树即可AC,每次提取出两个大根堆顶的元素除以二再放回去,然后合并两个堆,输出堆顶。

代码
#include<bits/stdc++.h>
using namespace std;
const int M=100005;
struct node{
    int val,son[2],dis,dad;
};
node tree[M];
int n,m;
int merge(int a,int b)
{
    if(!a||!b)return a+b;
    if(tree[a].val<tree[b].val)swap(a,b);
    tree[a].son[1]=merge(tree[a].son[1],b);
    tree[tree[a].son[1]].dad=a;
    if(tree[tree[a].son[0]].dis<tree[tree[a].son[1]].dis)swap(tree[a].son[0],tree[a].son[1]);
    if(!tree[a].son[1])tree[a].dis=0;
    else tree[a].dis=tree[tree[a].son[1]].dis+1;
    return a;
}
int pop(int x)
{
    int le=tree[x].son[0],ri=tree[x].son[1];
    tree[le].dad=le;
    tree[ri].dad=ri;
    tree[x].son[0]=tree[x].son[1]=tree[x].dis=0;
    return merge(le,ri);
}
int root(int x)
{
    while(tree[x].dad!=x)x=tree[x].dad;
    return x;
}
void in()
{
    memset(tree,0,sizeof(tree));
    for(int i=1;i<=n;++i)
    scanf("%d",&tree[i].val),tree[i].dad=i;
}
void ac()
{
    scanf("%d",&m);
    int a,b,t1,t2;
    for(int i=1;i<=m;++i)
    {
        scanf("%d%d",&a,&b);
        a=root(a);b=root(b);
        if(a==b)
        {
            printf("-1\n");
            continue;
        }
        tree[a].val/=2;tree[b].val/=2;
        t1=pop(a);t2=pop(b);
        a=merge(a,t1);b=merge(b,t2);
        printf("%d\n",tree[merge(a,b)].val);
    }
}
int main()
{
    while(scanf("%d",&n)!=EOF)
    in(),ac();
    return 0;
}
ArcGIS笔记2_如何将经纬度WGS84地理坐标系转换为米单位CGCS2000投影坐标系 本博文则主要讲解,如果我们手里拿到的shp文件是在ArcGIS中,如何将经纬度WGS84地理坐标系转换为米单位CGCS2000投影坐标系。 阅读详情

相关推荐

从芯片原厂到BSP工程师:技术转型与核心能力解析

嵌入式系统开发中,BSP(板级支持包)作为连接硬件与操作系统的关键层,其开发能力直接影响设备稳定性与性能。理解Linux内核架构(如内存管理、进程调度)和基础接口协议(I2C/SPI/USB)是BSP工程师的核心技能。在芯片验证与驱动开发场景中,多核异构系统调试与稳定性问题排查(如死机分析)展现了工程师的实战能力。随着物联网与智能设备发展,掌握从硬件适配到系统优化的全链路技术栈,成为职业发展的关键突破点。

weixin_36012152的博客 600

【洛谷】P1456 Monkey King

但是猴子们不能避免争吵,且两只猴子只会在不认识对方时发生争吵,当争吵发生时,双方会邀请它们各自最强壮的朋友并发起决斗(决斗的为各自最强壮的朋友)。当然,在决斗之后两只猴子和他们各自的伙伴都认识对方了(成为朋友),虽然他们曾经有过冲突,但是他们之间绝不会再发生争吵了。可以用左倾堆 + 并查集,这里需要用大顶堆,每个并查集对应一个大顶堆,并且维护并查集的树根即为该大顶堆的堆顶。所在堆的堆顶,这两个即为强壮值最大的两个猴子(如果堆顶相等则说明不需要决斗),做决斗的时候,先合并。的强壮值减半,再合并进去。...

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

从打印攻击到视频重放:手把手用OULU-NPU训练你的第一个活体检测模型

本文详细介绍了如何使用OULU-NPU数据集训练活体检测模型,以应对打印攻击和视频重放等安全威胁。通过PyTorch框架,从环境准备、数据加载、预处理到模型架构设计,手把手教你构建一个高效的双流网络,结合CNN和LSTM技术,提升模型在多种攻击场景下的检测准确率。

weixin_29092031的博客 386

洛谷——P1456 Monkey King

题目描述 Once in a forest, there lived N aggressive monkeys. At the beginning, they each does things in its own way and none of them knows each other. But monkeys can’t avoid quarrelling, and it only happens between two monkeys who does not know each other. An

ZzzzGgggHhhh的博客 459

安卓模拟器绕过检测全解析:雷电、MuMu、蓝叠、逍遥、夜神与WSA完整指南

随着手机游戏和应用的普及,越来越多的用户选择在PC上通过模拟器来运行安卓应用。然而,许多应用和游戏为了防止作弊或出于安全考虑,会检测是否运行在模拟器环境中。本文将详细介绍各大主流模拟器的检测绕过方法,帮助用户在电脑上流畅体验各类安卓应用。1. 获取模拟器系统镜像2. 使用ROM厨房工具修改系统文件3. 替换模拟器的系统镜像雷电模拟器:适合游戏,推荐使用MAGISK + EdXposed方案MuMu模拟器:适合中度游戏,推荐太极框架蓝叠模拟器:适合国际应用,推荐MAGISK方案逍遥模拟器。

专注技术分享 3万+

如何利用CANoe在两路CAN通道之间创建网关(gateway)

CANoe网关,利用CAPL实现CAN转发

Richy_Lai的博客 7901

P1456 Monkey King(左偏树)

洛谷题目传送门 题目描述 曾经在一个森林中居住着 N 只好斗的猴子。在最初他们我行我素,互不认识。但是猴子们不能避免争吵,且两只猴子只会在不认识对方时发生争吵,当争吵发生时,双方会邀请它们各自最强壮的朋友并发起决斗(决斗的为各自最强壮的朋友)。当然,在决斗之后两只猴子和他们各自的伙伴都认识对方了(成为朋友),虽然他们曾经有过冲突,但是他们之间绝不会再发生争吵了。 假设每只猴子有一个强壮值,强壮值将在一场决斗后减少为原先的一半(例如 10 会减少到 5,而 5 会减少到 2,即向下取整)。 我们也假设每只猴子

jwg2732的专栏 271

GNU Radio系列教程(一):什么是GNU Radio?为什么我需要用GNU Radio?

目录 一、什么是软件无线电? 二、GNU Radio到底能做什么事情? 三、我如果不精通编程,还能用GNU Radio吗? 四、GNU Radio使用需要授权吗? 五、基于GNU Radio,人们已经做了取得了哪些成果? 六、数字信号处理、基带、时钟同步…这些名词是什么意思? 七、有用的链接和联系方式 GNU Radio是一个免费的开源软件工具包,该工具包提供了可用于软件无线电的信号处理模块。基于一些通用的射频前端设备,该工具包可以用来实现软件无线电系统。此外,该工具包也可以用于单纯...

无线通信实验室 1万+

【luogu P1456】Monkey King(左偏树)

给你一些点,一开始没有边,有 m 次操作每次选两个点,如果已经连通就输出 -1,否则连边,而且把当前连通块子树最大点除二并输出。

欢迎您的光顾awa 372

2025年情感分析(SA)综述——论文阅读报告

2025年情感分析(SA)综述——论文阅读报告

Samdy_L的博客 2088

面试官连夜整理:103道AI Agent面试题,答对一半直接加薪50%

维度AutoGPTLangGraphAutoGen控制流LLM 驱动的隐式循环代码层定义的显式状态图对话驱动的自动流转状态存储Prompt 上下文中(易丢失)结构化 State 对象(可持久化)对话历史(自动累积)分支能力依赖 LLM 的文本输出(不稳定)条件边 + 节点路由(确定性)多 Agent 对话自然分支(涌现式)回溯/回滚无原生支持,只能重新开始原生 Checkpoint 支持时间旅行无全局回滚,单 Agent 可重启人机协同仅人工在关键点介入(需要自定义)原生支持。

weixin_35774598的博客 623

【洛谷P1456】Monkey King

题目描述Once in a forest, there lived N aggressive monkeys. At the beginning, they each does things in its own way and none of them knows each other. But monkeys can’t avoid quarrelling, and it only happen

wang_sj的博客 466

IPGUARD客户端与应用程序冲突

客户端与应用程序冲突 症状 安装客户端之后,客户端的某些程序无法运行或使用过程中出现异常,卸载客户端后恢复正常。 原因分析 可能是客户端的某些功能与应用程序发生冲突导致。 解决方法 当出现这样的情况时,可以按照以下步骤确认。 步骤1:屏蔽主动注入 在客户端配置策略中,增加配置策略hookapi_disinj,值为1;待策略同步到客户端后,重启客户端确认问题是否解决。如果解决,则转到...

IP-Guard专栏 1411

luogu P1456 Monkey King

背景: 正式的高中生了。 开学了,很不愉快。 由于是竞赛生,因此我们在教室里的位置置底了。 题目传送门: https://www.luogu.org/problem/P1456 题意: nnn只猴子,每一次两只猴子打架,是两个部落中战斗力最高的两只打架,打架后战斗力减半,合成一个部落,求每一次打完架后合并成的部落的战斗力最高的猴子的战斗力。 思路: 这显然是左偏树的模板。 直接维护大跟...

zsyz_ZZY的博客 310

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

android 蓝牙通讯demo

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

【luogu P1456 Monkey King】 题解

题目链接:https://www.luogu.org/problemnew/show/P1456 左偏树并查集不加路径压缩吧... #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const ...

139

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

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

[Luogu 1456] Monkey King

题目描述: 雾。 题目分析: 左偏树裸题,注意朋友的朋友也是朋友,用并查集来维护关系 题目链接: Luogu 1456 Ac 代码: #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cstring&gt; const int maxm=110000; struct left_tree{ ...

HT008的Blog 200

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Monkey king (luogu P1456)

膜拜手写可并堆的大佬们 本蒟蒻只会用一个十分偷懒的办法 (但似乎复杂度不那么优秀) 应该没人知道在 ext/pb_ds/priority_queue.hpp 里面有可并堆的STL吧,这里讲一下最优秀的配对堆 (pairing_heap) #include&lt;ext/pb_ds/priority_queue.hpp&gt; using namespace __gnu_pbds; ...

asd_hjh的博客 236

luoguP1456 Monkey King

题目链接 分析 左偏树的模板题,加上并查集之后还是很好理解的,没有什么思路可言就是合并和修改堆中的元素; 代码+注释 #include&lt;bits/stdc++.h&gt; #define N 100005 using namespace std; int n,x,y,k,h,m,cnt,fa[N],v[N],l[N],r[N],d[N]; int find(int x){retu...

pandeng的博客 249

Monkey King(猴王)——可并堆走起

猴王时间限制: 1 Sec 内存限制: 128 MB题目描述 很久很久以前,在一个广阔的森林里,住着n只好斗的猴子。起初,它们各干各的,互相之间也不了解。但是这并不能避免猴子们之间的争吵,当然,这只存在于两个陌生猴子之间。当两只猴子争论时,它们都会请自己最强壮的朋友来代表自己进行决斗。显然,决斗之后,这两只猴子以及它们的朋友就互相了解了,这些猴子之间将再也不会发生争论了,即使它们曾经发生过冲

Y_sofun的博客 1785

洛谷 P1456 Monkey King(左偏树)

左偏树 本题要点: 1、首先,每一个节点里需要加入指向父节点的下标 fa。 2、这里的左偏树根节点是最大元素, merge 函数里面, if(tree[x].val < tree[y].val) // 根节点是最大元素,这里是小于号 swap(x, y); 3、然后每一查找到 点x所在的左偏树的根节点 fax, fax 的 val 减半, 这时候需要调整 fax 的位置: 先合并 fax 的左右孩子 merge(tree[fax].lc, tree[fay].rc) (假设为newtree),

qq_38232157的博客 168

ZOJ 2334 Monkey King(左偏树)

题目链接:点击打开链接 思路:左偏树模板题, 需要维护集合关系, 这个可以用并查集很方便的维护, 另外需要用一个数组来维护每个点所在的左偏树编号。 细节参见代码: #include #include #include #include #include #include #include #include #include #include #include #include #includ

AC_Arthur的专栏 3918

hdu1512 & zoj2334Monkey King(左偏树 + 并查集)

Monkey King Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2543    Accepted Submission(s): 1064 Problem Description Once in a for

ophunter的专栏 1775

洛谷P1456 Monkey King 【左偏树】

第一道左偏树。 贴个模板纪念一下(因为没看到多组数据WA了一发。。 ) Code: #include<cstdio> #include<cctype> #include<algorithm> #define maxn 100005 using namespace std; inline void read(int &a){ char c;while(...

Master.Yi的博客 306

洛谷P1456 (HDU 1512)Monkey King

左偏树

forezxl的博客 440

P1456 Monkey King

左偏树什么的已经忘记啦,但是平板电视是忘不掉的。 我们只需要来这么一下: #include<exts/pb_ds/priority_queue.hpp> __gnu_pbds::priority<int> heap[maxn]; // 如果要小根堆就在int后面来个std::greater<int> 用一个冰茶姬维护集合,每次从所在集合拿出最大元素。然...

dianshu0741的博客 258

Monkey King

题目 Once in a forest, there lived N aggressive monkeys. At the beginning, they each does things in its own way and none of them knows each other. But monkeys can’t avoid quarrelling, and it only happen...

扬弃 359
上一篇: [数据结构] 左偏树
下一篇: 有序表的最小和(element)
ShadyPi
博客等级 码龄9年 1万+粉丝 637原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值