蒙德冒险者的游戏

描述

蒙德城的一群冒险者计划进行一场特殊的表演以庆祝风神节。这场表演涉及到一项特别的挑战,即“冒险者塔”——一项测试冒险者们团队协作和个人承受能力的活动。

在“冒险者塔”表演中,参与者需要站在彼此的肩膀上,形成一个人类塔,以此展示他们的勇气和团队精神。每个冒险者都有自己的重量和承受能力(代表他们能承受多少重量而不至于受伤)。为了保证表演的安全性,组织者需要计算出一种参与者的排序方式,使得塔中任何一个冒险者承受的极限(即他们头上所有人的总重量减去他们的承受能力)尽可能小。

请你求取一个方案,使得所有冒险者承受的极限值中的最大值尽可能的小。

输入

第一行输入整数N,表示冒险者数量。

接下来N行,每行输入两个整数,表示每位冒险者的重量Wi和承受能力Si。

1≤N≤50000,1≤Wi≤10,000,1≤Si≤1,000,000,000

输出

输出一个整数,表示最大极限值的最小可能值。

输入样例 1

3
10 3
2 5
3 3

 输出样例2

2

思路:

这道题的原型是 “耍杂技的牛”,经典的贪心模板题。

我们考虑第i+1 个人在第 i 个人下面,则

Vi=W(1~i-1)-si       Vi+1=W(1~i)-si+1     若交换两人的位置则

Vi=W(1~i-1)-si+Wi+1     Vi+1=W(1~i-1) - si+1

考虑最优子结构,是否交换两人的位置取决于是否

W(1~i-1)-si+Wi+1<W(1~i)-si+1    即    -si+Wi+1<Wi-si+1    --》

Wi+1+si+1<Wi+si  ,此时需要交换两者的位置,因此我们只需要将原序列按照w+s升序排列即可

代码实现:

#include<iostream>
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
bool comp(pair<int,int>& p1,pair<int,int> &p2)
{if(p1.first!=p2.first)return p1.first<p2.first;else{return p1.second<p2.second;}
}
int main()
{int N;cin>>N;vector<pair<int,int>> av;int sum=0;for(int i=0;i<N;i++){int w=0,s=0;cin>>w>>s;av.push_back(make_pair(w+s,s));}sort(av.begin(),av.end(),comp);vector<pair<int,int>>::iterator it=av.begin();int res=-0x3f3f3f3f;while(it!=av.end()){int s=it->second;int w=(it->first)-s;int v=sum-s;res=max(v,res);sum+=w;it++;}cout<<res<<endl;return 0;
}

需要注意的是,我最开始用的是map容器,(因为它会根据key值自动排序),但是有个别测试点无法通过,这与map容器的底层逻辑有关,map是一个树形结构,无法处理key值相等的情况,也就是当key值相等时,map容器的排序是随机的,而我们需要在key值相等时,按照value值排序,也就是承受能力强的人在下方。

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

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

相关文章

智能汽车领域检测实验室数智化转型

随着汽车制造行业自主研发能力的提高&#xff0c;当前的汽车企业实验室不仅需要进行种类繁多的试验项目&#xff0c;同时还需要将试验过程中的试验结果、试验过程、报告文档等一系列重要数据进行统一管理。为了提升实验数据的安全性及应用性&#xff0c;青软青之通过软硬件结合…

快速下载huggingface资源 (cli使用)

因为墙的原因&#xff0c;huggingface上的资源难以下载&#xff0c;通过本博客的方法不需翻墙也能快速下载。 本博客主要介绍&#xff1a; 1. 如何离线下载huggingface 资源 2. huggingface cli 的简单使用 安装 pip install -U "huggingface_hub[cli]" 配置 #…

for in 和 for of 的区别

1.for in 和 for of 都可以循环数组&#xff0c;for in 输出的是数组的 index 下标&#xff0c;而 for of 输出的是数组的每一项的值。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport…

Unity类银河恶魔城学习记录12-7-2 p129 Craft UI - part 2源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI_CraftWindow.cs using UnityEngine.UI; using TMPro; using UnityEngin…

动态规划在电商订单计算的例子

你在网上买了一堆商品,比如说,你买了2件T恤,每件10块,5件袜子,每双5块,还有1个帽子,8块钱。但是呢,商家有个促销活动,买得越多,单价就越便宜。比如,T恤买3件以上,每件就变成9块了。这时候,怎么算出你这一单的最少花费呢? 商品价格可能会因为购买数量的不同而有所…

重看Spring聚焦ApplicationContext分析

一、理解下ApplicationContext的设计 &#xff08;一&#xff09;功能性的理解 ApplicationContext 提供了一个轻量级、灵活、可扩展的容器&#xff0c;能帮助我们更加轻松地构建和管理复杂的应用程序&#xff0c;其通过依赖注入和控制反转等技术&#xff0c;降低了组件之间的…

SpringBoot 多数据源与事务管理:一站式解决方案

大纲 引言 在当今的软件开发中&#xff0c;随着业务的不断扩展和复杂化&#xff0c;许多应用程序都不再局限于单一的数据库&#xff0c;而是需要同时操作多个数据源以满足各种需求。SpringBoot作为一种快速开发框架&#xff0c;在处理单数据源的情况下表现出色&#xff0c;但…

【算法】统计英文字母出现的频率

题目 字母出现频率是指26英文个字母在文章中出现的频率。根据统计&#xff0c;在英语中最常出现的字母是e&#xff0c;大约占12~13%&#xff0c;出现最少的字母是z&#xff0c;不到0.1% &#xff0c;如下图所示&#xff08;统计结果来自wiki百科&#xff09; 字母出现频率的统…

三方库移植之NAPI开发(三)通过IDE开发NAPI工程

在三方库移植之NAPI开发[1]—Hello OpenHarmony NAPI一文中&#xff0c;笔者开发的是一个rom包的napi工程。该工程需要编译烧录固件&#xff0c;C 的动态库会集成到开发板的ROM中。在本篇文章中&#xff0c;笔者使用三方库移植之NAPI开发[1]—Hello OpenHarmony NAPI中一样的he…

VXWorks6.9 + Workbench3.3 开发环境部署

VxWorks系列传送门 一、安装包 有需要的朋友可以私信~ 二、安装 安装挺简单 1、先安装DVD-R147826.1-1-01-vx69.udf.iso 镜像中的Setup.exe程序&#xff0c;记住要使用管理员权限 2、再安装DVD-R147826.1-23-00.iso 镜像中的Setup.exe程序&#xff0c;同样要使用管理员权限 3…

基于大数据的汽车信息可视化分析预测与推荐系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 本项目通过集成网络爬虫技术&#xff0c;实时获取海量汽车数据&#xff1b;运用先进的ARIMA时序建模算法对数据进行深度挖掘和分析&#xff1b;结合flask web系统和echarts可视化工具&#xff0c;…

CF698B Fix a Tree 题解 贪心

Fix a Tree 传送门 A tree is an undirected connected graph without cycles. Let’s consider a rooted undirected tree with n n n vertices, numbered 1 1 1 through n n n . There are many ways to represent such a tree. One way is to create an array with n…

基于GitHub的开源讨论系统,赋予网站交互可能

Giscus&#xff1a;让每一条见解直达GitHub&#xff0c;用Giscus开启网站与社区的无缝对话新纪元&#xff01;- 精选真开源&#xff0c;释放新价值。 概览 纯静态网站或博客&#xff0c;由于没有数据存储功能&#xff0c;经常借助第三方的评论系统以插件的方式集成进来&#x…

uniapp 编译后分包下静态图片404问题解决方案

如上图官方说明&#xff1a; 在分包下建立一个static文件夹即可&#xff1a; 分包内代码引用图片 <image src"/分包名称/img/图片名称"></image> <image src"/dataView/img/图片名称"></image>

图书整理 I 1、返回列表 2、头插法,返回链表 3、尾插法,返回链表

返回列表 class Solution:def reverseBookList(self, head: Optional[ListNode]) -> List[int]:li []while head:li.append(head.val)head head.nextreturn li[::-1]头插法&#xff0c;返回链表 class ListNode:def __init__(self, item):self.val itemself.next None…

Rust教程 – 学习天文图像的多尺度处理

最近&#xff0c;人们投入了大量精力开发新颖的图像处理技术。其中许多技术都源自于傅里叶和小波变换等数字信号处理方法。 这些技术不仅使得各种图像处理技术如降噪、锐化和动态范围扩展成为可能&#xff0c;而且还使得计算机视觉中使用的许多技术如边缘检测、目标检测等成为…

RobotFramework测试框架(7)-SeleniumLibrary常用关键字

浏览器操作 打开浏览器 Open Browser urlhttps://www.baidu.com browseredge关闭浏览器 Close Browser最大化浏览器 Maximize Browser Window设置浏览器宽高 Set Window Size 800 600刷新页面 Reload Page iframe操作 选中指定iframe Select Frame loc…

SQL执行流程图文分析:从连接到执行的全貌

SQL执行总流程 下面就是 MySQL 执行一条 SQL 查询语句的流程&#xff0c;也从图中可以看到 MySQL 内部架构里的各个功能模块。 MySQL 的架构共分为两层&#xff1a;Server 层和存储引擎层&#xff0c; Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在…

Navicat连接SQL server出现:[IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序(0)

问题 解决方法 一 找到Navicat的安装路径&#xff0c;然后找到sqlncli_x64.msi文件并安装&#xff0c;安装成功后重启Navicat重新进行连接&#xff0c;看是否成功。 解决方法 二 如果方法一没有找到找到sqlncli_x64.msi 还是Navicat的安装路径&#xff0c;然后找到msodbcsql_64…

03-JAVA设计模式-适配器模式

适配器模式 设么是适配器模式 它属于结构型模式&#xff0c;主要用于将一个类的接口转换成客户端所期望的另一种接口&#xff0c;从而使得原本由于接口不兼容而无法协同工作的类能够一起工作。 适配器模式主要解决的是不兼容接口的问题。在软件开发中&#xff0c;经常会有这…