备战蓝桥杯---数据结构与STL应用(优先队列的小细节)

news2024/10/7 14:30:59

很显然,我们先二分求X,对于验证,一开始我先想的是直接求每个的不足电量再除充电量后向上取整,然后判断与k的大小关系。事实上,如果让k很大,若有两只手机在下一刻多没电,显然上述方法得出的结论是错误的,因为我们忽视了过程性,因此,我们考虑用优先队列来维护每分中电量min的,并且因为耗电量不同,所以我们可以用商的形式来存(即存时间,这样巧妙的化解了耗电量不同带来的影响)并且注意优先队列中存结构体的形式。

下面是常见的三种形式(摘自一个大佬的题解):

struct node{
	int a,b;
	double d;
	friend bool operator<(node x,node y){
		return x.d>y.d;//按照d从小到大排序
		//注意:要记得反符号哦
	}
}a[200005];
struct node{
	int a,b;
	double d;
	bool operator<(const node &x)const{
		return d>x.d;
	}
}a[200005];
struct node{
	int a,b;
	double d;
}a[200005];
bool operator<(const node &x,const node &y){
	return x.d>y.d;
}

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,k;
struct node{
	int aa,bb;
	double d;
}a[200010];
bool operator<(const node &x,const node &y){
	return x.d>y.d;
}
int check(int mid){
	priority_queue<node> q;
	for(int i=1;i<=n;i++) q.push(a[i]);
	for(int i=1;i<=k;i++){
		if(q.top().d-i<-1) return 0;
		node qq=q.top();
        qq.d+=1.0*mid/qq.bb;
        q.push(qq);
		q.pop();
	}
	return 1;
}
signed main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++) scanf("%d",&a[i].aa);
	for(int i=1;i<=n;i++) scanf("%d",&a[i].bb);
	for(int i=1;i<=n;i++) a[i].d=1.0*a[i].aa/a[i].bb;
	int l=0,r=2000000000000;
	while(l<r){
		int mid=(l+r)/2;
		if(check(mid)==1) r=mid;
		else l=mid+1;
	}	
	if(check(r)==1) cout<<r;
	else cout<<-1;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虹科干货 | 如何使用nProbe Cento构建100 Gbit NetFlow 传感器

本文是一份全面的指南&#xff0c;解释了如何使用nProbe Cento构建一个高效的100 Gbit NetFlow传感器。旨在帮助大家充分利用NetFlow技术&#xff0c;以监控和分析高速网络流量。 当需要监控分布式网络&#xff0c;了解流经上行链路或关键网段的网络流量时&#xff0c;NetFlow…

【JVM】类加载流程

目录 1.加载 2.链接 &#xff08;1&#xff09;校验 &#xff08;2&#xff09;准备 &#xff08;3&#xff09;解析 3.初始化 4.使用 5.卸载 1.加载 加载阶段&#xff0c;简言之&#xff0c;查找并加载类的二进制数据&#xff0c;生成 Class 的实例 在加载类时&#x…

SpringCloud_学习笔记_1

SpringCloud01 1.认识微服务 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢&#xff1f; 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架构 单体架构&#xff…

Trinamic推出嵌入式运动控制模块,用于驱动大功率工业电机,大幅降低功耗

集成的实时、无传感器控制与驱动技术将功率损耗降低50%&#xff0c;可驱动功率高出三倍的电机(高达7A) TRINAMIC推出两款新型插槽式运动控制嵌入式模块及其开发工具&#xff0c;采用独特的实时无传感器控制技术。这些完备的控制/驱动模块通过在其板上实时处理关键功能&#xff…

JDBC 结构优化2

JDBC 结构优化2 文章目录 JDBC 结构优化2结构优化2 - ATM系统(存,取,转,查)1 Service2 事务3 ThreadLocal4 事务的封装 结构优化2 - ATM系统(存,取,转,查) 1 Service 什么是业务? 代表用户完成的一个业务功能&#xff0c;可以由一个或多个DAO的调用组成。软件所提供的一个功…

阿里云 DMS 执行sql变更

数据库开发-数据变更-无锁变更 选择数据库&#xff1a;比如要更新生产库&#xff0c;搜索生产库名字。 填入变更sql。

【计算机图形】几何(Geometry)和拓扑(Topology)

目录 参考文献三维实体建模内核CSG/BREPParasolid简介Parasolid接口函数Parasolid类的结构 Parasolid数据分类&#xff1a;几何(Geometry)和拓扑(Topology)拓扑(Topology)什么是“拓扑”呢&#xff1f;Principle Geometry- Topology - Construction Geometry案例&#xff1a;拓…

最新多功能PHP图床源码 /兰空图床Lsky Pro开源版v2.1/ 单纯的图床程序源码

源码介绍&#xff1a; Lsky Pro 是一个用于在线上传、管理图片的图床程序&#xff0c;中文名&#xff1a;兰空图床&#xff0c;你可以将它作为自己的云上相册&#xff0c;亦可以当作你的写作贴图库。 该程序的最初版本诞生于2017年10月&#xff0c;由ThinkPHP 5框架精心打造而…

飞致云开源社区月度动态报告(2024年1月)

自2023年6月起&#xff0c;中国领先的开源软件公司FIT2CLOUD飞致云以月度为单位发布《飞致云开源社区月度动态报告》&#xff0c;旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况&#xff0c;以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源大屏…

初谈C++:引用

文章目录 前言概述引用特性应用场景做参数做返回值 传值、传引用效率比较引用和指针的区别 前言 在学习C语言的时候会遇到指针&#xff0c;会有一级指针、二级指针…很容易让人头昏脑胀。在C里面&#xff0c;引入了引用的概念&#xff0c;会减少对指针的使用。引用相当于给一个…

Android矩阵Matrix变换setRectToRect,Kotlin

Android矩阵Matrix变换setRectToRect&#xff0c;Kotlin 在 Android画布Canvas裁剪区域clipRect&#xff0c;Kotlin-CSDN博客 基础上&#xff0c;增加一个点&#xff0c;通过setRectToRect挖出Bitmap原图中心区域的一块放到目标RectF里面。 import android.content.Context imp…

phpstudy安装mysql5.7后在my.ini文件中无法修改sql_mode

如标题&#xff0c;windows环境下使用phpstudy安装mysql5.7后需要修改mysql中的sql_mode配置&#xff0c;但是在phpstudy中打开mysql配置文件my.ini后&#xff0c; 通过查找找不到sql_mode或sql-mode&#xff0c; 此时无法在my.ini文件中直接进行修改&#xff0c;可以使用mysq…

开源大数据集群部署(八)Ranger编译部署

作者&#xff1a;櫰木 在hd1.dtstack.com主机root权限下操作。 1、 编译ranger ranger二进制包编译过程在本次过程中不做详细说明。简单说明如下&#xff1a; 在pom.xml中更改对应hadoop集群组件版本。ranger2编译前提条件是python3和mvn已安装完成。编译命令&#xff1a; …

ROS---机器人导航实现

ROS—机器人导航实现 1 准备工作 1.1 分布式架构 需要完成分布式框架的搭建并且能正常运行&#xff0c;在PC端可以远程登录机器人端。 1.2 功能包安装 在机器人端安装导航所需功能包&#xff1a; 安装 gmapping 包(用于构建地图):sudo apt install ros-<ROS版本>-g…

Linux下Docker搭建部署Typecho博客【详细版】

Linux下Docker搭建部署Typecho博客【详细版】 一、环境准备1.1.准备阿里云服务器【新用户免费使用三个月】1.2.准备远程工具【FinalShell】1.3.系统信息1.4.安装所需软件包1.5.设置docker镜像源1.6.更新yum软件包索引1.7.确认停用selinux 二、安装Docker2.1.安装Docker-Ce2.2.查…

Spring Boot3,启动时间缩短 10 倍!

前面松哥写了一篇文章和大家聊了 Spring6 中引入的新玩意 AOT&#xff08;见Spring Boot3 新玩法&#xff0c;AOT 优化&#xff01;&#xff09;。 文章发出来之后&#xff0c;有小伙伴问松哥有没有做性能比较&#xff0c;老实说&#xff0c;这个给落下了&#xff0c;所以今天…

oracle错误:The Network Adapter could not establish the connection

执行请求的操作时遇到错误: IO 错误: The Network Adapter could not establish the connection (CONNECTION_IDU34sFBqOSayf4o4C6pwQ6A) 供应商代码 17002 原因&#xff1a; 错误代码 17002 表示 Oracle 数据库客户端遇到了网络适配器无法建立连接的问题 解决办法&#x…

鸿蒙harmony--TypeScript基础语法

把青春献给身后那座辉煌的都市&#xff0c;为了这个美梦我们付出着代价 目录 一&#xff0c;基础类型 二&#xff0c;数组 三&#xff0c;any 四&#xff0c;变量的类型注释 五&#xff0c;函数 5.1 参数类型注解 5.2 返回类型注解 5.3 匿名函数 六&#xff0c;对象类型 可选属…

网络的基础

协议分层&#xff1a; 为什么会协议分层&#xff1f; 问题本身是分层的 不断进行封装&#xff0c;低耦合 对应的网络协议栈与操作系统有什么关系&#xff1f; 其中五层协议中最重要的传输层和网络层就是操作系统中的板块。 网络通信的本质&#xff1a; 贯穿协议栈的过程。…

ElementUI Form:Checkbox 多选框

ElementUI安装与使用指南 Checkbox 多选框 点击下载learnelementuispringboot项目源码 效果图 el-checkbox.vue 页面效果图 项目里el-checkbox.vue代码 <script> const cityOptions [上海, 北京, 广州, 深圳] export default {name: el_checkbox,data() {return …