2023 Shandong Provincial Collegiate Programming Contest

D. Fast and Fat(2023 ICPC 山东省赛)(二分+贪心检查)

题意:

        对于一个运动员 i ,他的速度是 vi,体重是 wi。如果运动员 j 的体重 wj <= wi,那么运动员 i 可以用原本的速度 vi 背着运动员 j 奔跑。如果 wj > wi,那么速度就变成了 vi - ( wi - wj ) (如果是负数,那么运动员 i 不能背着 j 奔跑)。

        给定一个T,代表有T组数据。每组数据第一行输入一个n,代表这个团队有n个人,后面n行,每行两个数vi,wi。运动员可以被背着跑,也不能不背着人跑。求这个团队奔跑起来后速度最慢的那个人  的速度最大值。

思路:

        我们可以发现,当vi+wi > vj+wj 时,i 一定可以背着 j 跑。

        考虑取速度最大值和最小值,然后不断二分找答案。

        在二分答案时,对于答案 x ,选出大于等于速度 x 的人当中 vi+wi 最高的几个人,分别去背着速度小于 x 的人当中 wi 最大的人奔跑。

代码:

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
#define int long long
typedef pair<int, int>PII;
const int Max = 0x3f3f3f3f3f3f3f3f;
const int Min = -0x3f3f3f3f3f3f3f3f;
int n, m, k;
int T;
PII q1[N], q2[N];
queue<int>que, que2;
bool cmp(PII aa, PII bb)
{return aa.first+aa.second > bb.first+bb.second;
}
bool cmp2(PII aa, PII bb)
{return aa.second > bb.second;
}
int check(int x)
{while(que.size()) que.pop();   //多组输入,每次使用队列前都要清空while(que2.size()) que2.pop();//如果速度大于等于当前 x,那么将vi+wi从大到小存入队列(已经排完序了)for(int i = 0; i < n; i ++){if(q1[i].first>=x) que.push(q1[i].first + q1[i].second - x);}//如果速度小于当前的 x, 那么将wi从大到小存入队列for(int i = 0; i < n; i ++){if(q2[i].first<x) que2.push(q2[i].second);}//如果可以背人的人数小于需要被人背着的人数,直接falseif(que.size() < que2.size()) return false;//一一对应,队列中vi+wi最大的去背着队列中wi最大的,队列中vi+wi第二大的去背着队列wi第二大的...while(que2.size()){if(que.front() < que2.front()) return false;que.pop(), que2.pop();}return true;
}
signed main()
{ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);cin >> T;while(T --){int head = Min, tail = Max;cin >> n;for(int i = 0; i < n; i ++){int x, y;cin >> x >> y;q1[i].first = q2[i].first = x;q1[i].second = q2[i].second = y;head = max(x, head);      //求出速度的最大值和最小值tail = min(x, tail);}sort(q1, q1+n, cmp); //pair 排序(根据vi+wi从大到小)sort(q2, q2+n, cmp2); // 根据wi从大到小排序// 二分答案while(tail < head){int mid = head + tail + 1 >> 1;if(check(mid)) tail = mid;else head = mid - 1;}cout << head << "\n";}return 0;
}

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

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

相关文章

深入篇【C++】总结<lambda表达式>与<包装器和bind>的使用与意义

深入篇【C】总结&#xff1c;lambda表达式&#xff1e;与&#xff1c;包装器和bind&#xff1e;的使用与意义 一.lambda表达式1.使用语法2.底层本质3.应用意义 二.包装器(适配器)1.使用语法2.解决问题①3.解决问题②4.应用场景:指令操作 三.bind (适配器)1.调整参数位置2.绑定参…

C# Windows 窗体控件中的边距和填充

可以将 Margin 属性、Left、Top、Right、Bottom 的每个方面设置为不同的值&#xff0c;也可以使用 All 属性将它们全部设置为相同的值。 在代码中设置Margin&#xff0c;元素的左边设置为5个单位、上边设置为10个单位、右边设置为15个单位和下边设置为20个单位。 TextBox myT…

【gitlab】本地项目上传gitlab

需求描述 解决方法 下面的截图是gitlab空项目的描述 上传一个本地项目按其中“Push an existing folder”命令即可。 以renren-fast项目为例 # 用git bash 下载renren-fast项目 git clone https://gitee.com/renrenio/renren-fast.git# 在renren-fast的所属目录 打开git ba…

1.1 Joyvan的矩阵

算法设计与分析 1.1 Joyvan的矩阵 题目描述 Joyvan有一个大小为n * m的矩阵&#xff0c;现在他要对矩阵进行q次操作&#xff0c;操作分为如下三种&#xff1a; 0 x y&#xff1a;交换矩阵的x、y两行。 1 x y&#xff1a;交换矩阵的x、y两列。 2 x y&#xff1a;求当前矩阵第…

【数据结构与算法】如何对快速排序进行细节优化以及实现非递归版本的快速排序?

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;国庆长假结束了&#xff0c;无论是工作还是学习都该回到正轨上来了&#xff0c;从今天开始恢复正常的更新频率&#xff0c;今天为大家带来的内容…

【Python_PySide2学习笔记(十八)】勾选按钮QCheckBox类的基本用法

勾选按钮QCheckBox类的基本用法 前言正文1、创建勾选按钮2、勾选按钮获取选中状态3、创建按钮组4、按钮组添加勾选按钮5、按钮组设置单选6、按钮组信号&#xff1a;选中状态改变7、按钮组获取所有勾选按钮7.1、获取勾选按钮对象7.2、获取勾选按钮文本7.3、获取勾选按钮ID7.4、按…

win11安装IIS步骤-已验证23.10.10

IIS服务使用 步骤一&#xff1a;打开控制面板 通过 控制面板— 程序— 启用或关闭Windows功能 — 选择Internet Information Services默认安装IIS&#xff0c;如下图步骤所示 步骤二&#xff1a;打开IIS服务 建议根据下图勾选&#xff0c;建议全选安装&#xff0c;以便后续发…

Vuex的核心概念及作用

核心概念 Store 有五个核心的概念&#xff0c;State、Getters、Mutations、Actions、Modules。你都必须要知道它们的作用是什么。 State 状态 我们每一个项目&#xff0c;基本上都是使用同一个 store 实例&#xff0c;所以 State 也是共用一个&#xff0c;State 是一个对象&…

聊聊2023年怎么入局小游戏赛道?

一、微信小游戏赛道发展史 第一阶段&#xff1a;轻度试水期&#xff0c;2017&#xff5e;2019年 微信小游戏于2017年底上线&#xff0c;初期以轻度休闲为主&#xff0c;例如棋牌、合成消除以及益智相关游戏类型。一是开发门槛不高&#xff0c;产品可以快速上线; 二是大部分厂…

虹科方案 | 汽车CAN/LIN总线数据采集解决方案

全文导读&#xff1a;现代汽车配备了复杂的电子系统&#xff0c;CAN和LIN总线已成为这些系统之间实现通信的标准协议&#xff0c;为了开发和优化汽车的电子功能&#xff0c;汽车制造商和工程师需要可靠的数据采集解决方案。基于PCAN和PLIN设备&#xff0c;虹科提供了一种高效、…

mac(M1)卸载miniconda3

参考https://stackoverflow.com/questions/29596350/how-to-uninstall-mini-conda-python step1 因为我目前只有一个base环境&#xff0c;所以直接在这个环境中安装 anaconda-clean即可 conda install anaconda-clean然后继续输入 anaconda-clean如果不加–yes&#xff0c;那…

[nltk_data] Error loading stopwords: <urlopen error [WinError 10054]

报错提示&#xff1a; >>> import nltk >>> nltk.download(stopwords) 按照提示执行后 [nltk_data] Error loading stopwords: <urlopen error [WinError 10054] 找到路径C:\\Users\\EDY\\nltk_data&#xff0c;如果没有nltk_data文件夹&#xff0c;在…

《安富莱嵌入式周报》第324期:单对以太网技术实战,IROS2023迪士尼逼真机器人展示,数百万模具CAD文件下载,闭环步进电机驱动器,CANopen全解析

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程&#xff1a; 第8期ThreadX视频教程&#xff1a;应用实战&#xff0c;将裸机工程移植到RTOS的任务划分…

黑马点评-05缓存穿透问题及其解决方案,缓存空字符串或使用布隆过滤器

缓存穿透问题(缓存空) 缓存穿透的解决方案 缓存穿透(数据穿透缓存直击数据库): 缓存穿透是指客户端请求访问缓存中和数据库中都不存在的数据,此时缓存永远不会生效并且用户的请求都会打到数据库 数据库能够承载的并发不如Redis这么高&#xff0c;如果大量的请求同时访问这种…

【nginx】nginx部署升级htpp+websocket访问

关注todo-step1和todo-step2就行了&#xff1a; user root; …… http {### Basic Settings##sendfile on;tcp_nopush on;types_hash_max_size 2048;client_max_body_size 10240m;include /etc/nginx/mime.types;default_type application/octet-stream;# 配置websocket访问 *…

基于YOLOv5、YOLOv8的火灾检测(超实用项目)

目录 1.简介 2.YOLO算法 3.基于YOLOv5、YOLOv8的火灾检测 视频已上传b站 YOLOv5/YOLOv8的火灾检测&#xff08;超实用项目&#xff09;_哔哩哔哩_bilibili 本文为系列专栏&#xff0c;包括各种YOLO检测算法项目、追踪算法项目、双目视觉、深度结构光相机测距测速三维测量项…

[鹏城杯 2022]简单的php - 无数字字母RCE(取反)【*】

[鹏城杯 2022]简单的php 一、解题流程二、思考总结 题目代码&#xff1a; <?php show_source(__FILE__);$code $_GET[code];if(strlen($code) > 80 or preg_match(/[A-Za-z0-9]|\|"||\ |,|\.|-|\||\/|\\|<|>|\$|\?|\^|&|\|/is,$code)){die( Hello);}e…

epoll 定时器

参考&#xff1a; Linux下使用epoll监听定时器-CSDN博客 但是这个用的是gettimeofday。 本人使用的是 #include <stdlib.h> #include<stdio.h> #include <sys/timerfd.h> #include <sys/epoll.h> #include <unistd.h> #include <sys/time.…

hbba网站下载国家标准/行业标准的方法

hbba网站是不提供下载按钮并且不支持右键的&#xff0c;那么如何下载呢&#xff1f; 1、首先看一下pdf有多少页&#xff0c;一般标准介绍上有写。 2、使用edge或google浏览器打开pdf预览页面&#xff0c;打开开发者模式&#xff0c;用小箭头指向第一页&#xff0c;这样就获取到…

短视频矩阵源码开发部署---技术解析

一、短视频SEO源码搜索技术需要考虑以下几点&#xff1a; 1. 关键词优化&#xff1a;通过研究目标受众的搜索习惯&#xff0c;选择合适的关键词&#xff0c;并在标题、描述、标签等元素中进行优化&#xff0c;提高视频的搜索排名。 2. 内容质量&#xff1a;优质、有吸引力的内…