P2286 [HNOI2004] 宠物收养场 题解

P2286 [HNOI2004] 宠物收养场 set做法

题链\(_{洛谷}\) \(_{题库}\)

思路

一眼查找前驱后继的题。注意到一句话:

image

那么用 set 就没有什么阻碍了,方便又快捷。

题意很简单,若宠物多则查找与人需求最接近的上下两个值,人多则找与宠物最接近的上下两个人的值。出题人很善良,把选人和选宠物的标准定成一样的,这样我们只写一个平衡树就可以了。

但不想写平衡树而 vector 的时间开销很大,那么我们考虑 set(不会 set 的看这里),set 是以红黑树的形式实现的,速度要快不少。

操作很简单,如果来的人(或宠物)与当前余下的同类就插入 set,如果 set 空了就改变余下的类型并插入,若不同类就进行查找,只用到迭代器 set<int>::iteratorlower_bound 查找操作。

code:

#include<bits/stdc++.h>
using namespace std;
const int Ratio=0;
const int maxx=2147483647;
int n,ans,lx;
set<int>s;
namespace Wisadel
{void Wfind(int x){set<int>::iterator l,r;l=--s.lower_bound(x),r=s.lower_bound(x);if(x-*l<=*r-x&&*l!=-maxx) ans+=x-*l,s.erase(l);else ans+=*r-x,s.erase(r);//查找 更新答案ans%=1000000;}short main(){scanf("%d",&n);s.insert(-maxx),s.insert(maxx);//防止越界for(int i=1;i<=n;i++){int a,b;scanf("%d%d",&a,&b);if(s.size()==2) lx=a,s.insert(b);else if(lx==a) s.insert(b);else Wfind(b);}printf("%d\n",ans);return Ratio;}
}
int main(){return Wisadel::main();}

完结撒花~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/738013.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dijkstra算法理解-无人机路径规划

1、理解 Dijkstra算法是路径规划算法中非常经典的一种算法,在很多地方都会用到,特别是在机器人的路径规划中,基本学习机器人运动相关的都会接触到该算法。 Dijkstra算法本身的原理是基于贪心思想实现的,首先把起点到所有点的距离存下来找个最短的,然后松弛一次再找出最短的…

Three.js

右手坐标系 //每秒转一圈 const clock = new THREE.Clock() function tick() {const time = clock.getElapsedTime()mesh.rotation.y = time * Math.PI * 2 //一秒转一圈renderer.render(scene, camera)window.requestAnimationFrame(tick) } tick()const client = {x: 0,y: 0 …

关于古书介绍上“单鱼尾”是什么?

在阅读一些古书时,读的往往时某些版本的综合刊定版,而介绍有关原版时,会出现这个词语“单鱼尾”或者双鱼尾,这是什么意思呢? 搜索发现,原来古书也不是一页页,单页的,而是双页印刷,然后中间折叠,装订成册的。而折叠的具体位置在哪呢?就由鱼尾型标志标明,显然鱼尾最凹…

数据特征采样在 MySQL 同步一致性校验中的实践

本文介绍了当前DTS应用中,MySQL数据同步使用到的数据一致性校验工具,并对它的实现思路进行分享。作者:vivo 互联网存储研发团队 - Shang Yongxing本文介绍了当前DTS应用中,MySQL数据同步使用到的数据一致性校验工具,并对它的实现思路进行分享。 一、背景 在 MySQL 的使用过…

什么是容器镜像?

镜像是容器的模板,容器运行需要借助镜像来装载环境。镜像描述了容器所需的运行时环境,我们以Docker镜像为例来了解镜像到底是什么。Docker镜像实际上是由一层一层的文件系统构成,这种层级的文件系统称为UnionFS。UnionFS文件系统是一种分层、轻量级并且高性能的文件系统,它…

字符串相似度算法完全指南:编辑、令牌与序列三类算法的全面解析与深入分析

在自然语言处理领域,人们经常需要比较字符串,这些字符串可能是单词、句子、段落甚至是整个文档。如何快速判断两个单词或句子是否相似,或者相似度是好还是差。这类似于我们使用手机打错一个词,但手机会建议正确的词来修正它,那么这种如何判断字符串相似度呢?本文将详细介…

Avalonia应用在基于Linux的国产操作deepin上运行

本文介绍了Avalonia应用如何在基于Linux的国产操作deepin上运行。deepin系统介绍 deepin(原名Linux Deepin)致力于为全球用户提供美观易用,安全可靠的 Linux发行版。deepin项目于2008年发起,并在2009年发布了以 linux deepin为名称的第一个版本。2014年4月更名为 deepin,在中…

java中的测试片段和include控制器使用

1.作用 可复用,提高测试计划的可维护性和效率。 2.具体使用 2.1在jmeter中将写好的一组请求保存为测试片段,保存到一个jmx文件 2.2新建一个线程组,添加include控制器,选择刚刚保存的测试片段文件即可将刚刚的测试片段重用。

splay-前驱后继

在平衡树中,经常会让我们查一下一个值的前驱或后继是谁,写两个函数就非常麻烦好吧,所以这里咱们用一点小技巧来让他变 成一个函数(这里的前驱后继定义时包括与本身相等的值) 代码点击查看代码 int nxt(int k){if(!m[rt].size) return 0;int root=rt;while(k!=m[root].val&…

softlockup detector

1 简介 从内核稳定性问题的角度来看内核安全,是基础,也是必备技能。很多时候,一个内核稳定性问题,就是造成系统安全的罪魁祸首。 当出现异常死锁、Hang up、死机等问题时,watchdog的作用就很好的体现出来。Watchdog主要用于监测系统运行情况,一旦出现以上异常情况,就会重…

drduino串口通信中文乱码

​ 第一次使用 Arduino 板学习时,遇到了串口工具接收乱码的问题。 最初认为可能是数据位或停止位设置不正确。当前设置如下:波特率:9600 数据位:8 校验位:无 停止位:1在 Arduino 代码中使用 Serial.begin(9600) 进行初始化。 Serial.begin(9600):- 波特率:9600- 数据位…

合理利用符号,用负反馈解决正反馈系统

首先,系统框图:此处的Kyrg当成是1,aircraft的状态方程系数为:A=[-0.0558 -0.9968 0.0802 0.0415; 0.598 -0.115 -0.0318 0; -3.05 0.388 -0.4650 0; 0 0.0805 1 0]; B=[0.00729 -0.475 0.153 0]; C=[0 1 0 0]; D=0;使用函数ss2tf和tf求出系统的传递函数为:sysGs =-0.475 …