省选专练之神仙贪心IOI2013Robert

2023-10-29

【问题描述】 小沐把玩具扔在地板上,乱七八糟。庆幸的是,有一种特殊的机器人可以收拾玩具。不过他需要 确定哪个机器人去拣哪个玩具。 一共有 T 个玩具,整数 w[i]表示这个玩具的重量,整数 s[i]表示这个玩具的体积。机器人有 两种,分别是:弱机器人和小机器人。

◆有 A 个弱机器人。每个弱机器人有一个重量限制 X[i],它只能拿起重量严格小于 x[i]的玩 具,与玩具的体积大小没有关系。

◆有 B 个小机器人。每个小机器人有一个体积限制 Y[i],它只能拿起体积严格小于 Y[i]的玩 具,与玩具的重量大小没有关系。 每个

机器人用 1 分钟将一个玩具拿走放好。不同的机器人可以同时拿走并放好不同的玩具。 你的任务是确定机器人是否可以将所有玩具都收拾好,如果是,那么最少用多少时间可以收拾好。

Marita's little brother has left toys all over the living room floor! Fortunately, Marita has developed special robots to clean up the toys. She needs your help to determine which robots should pick up which toys. There are T toys, each with an integer weight W[i] and an integer size S[i] . Robots come in two kinds: weak and small.

There are A weak robots. Each weak robot has a weight limit X[i] , and can carry any toy of weight strictly less than X[i] . The size of the toy does not matter.

There are B small robots. Each small robot has a size limit Y[i] , and can carry any toy of size strictly less than Y[i] . The weight of the toy does not matter.

Each of Marita's robots takes one minute to put each toy away. Different robots can put away different toys at the same time. Your task is to determine whether Marita's robots can put all the toys away, and if so, the shortest time in which they can do this.

这居然不是IOI的签到题(Day2-T5)

神仙贪心。

明显发现答案成一个单调的情况

二分答案

如何贪心:先对询问以重量关键字排序

对weak再按照尽可能取体积大的原则取走

对于剩下small的按照尽可能取体积大的原则取走

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
typedef int INT;
#define int long long
const int N=1e6+10;
struct Node{
	int x,y;
}S[N],tmp[N];
int X[N];
int Y[N];
int T,A,B;
priority_queue<Node> Q;
bool cmp(Node A,Node B){
	return A.x<B.x;
}
bool cmp2(int A,int B){
	return A>B;
}
bool operator < (Node A,Node B){
	return A.y<B.y;
}
bool check(int sum){
	while(!Q.empty())Q.pop();
	int now=1;
	for(int i=1;i<=A;++i){
		while(S[now].x<X[i]&&now<=T)Q.push(S[now]),++now;
		for(int j=1;!Q.empty()&&j<=sum;++j)Q.pop();
	}
	while(now<=T)Q.push(S[now]),++now;
	for(int i=1;i<=B;i++){
		for(int j=1;j<=sum&&!Q.empty()&&Q.top().y<Y[i];++j)Q.pop();
	}
	if(!Q.empty())return 0;
	return 1;
}
INT main(){
//	freopen("test.in","r",stdin);
	scanf("%lld%lld%lld",&A,&B,&T);
	for(int i=1;i<=A;++i)scanf("%lld",&X[i]);
	sort(X+1,X+1+A);
	for(int i=1;i<=B;++i)scanf("%lld",&Y[i]);
	sort(Y+1,Y+1+B,cmp2);
	for(int i=1;i<=T;++i){
		scanf("%lld%lld",&S[i].x,&S[i].y);
	}
	sort(S+1,S+1+T,cmp);
	int l=1;
	int r=T+1;
	int ans=-1;
	while(l<=r){
		int mid=(l+r)/2;
		if(check(mid)){
			ans=mid;
			r=mid-1;
		}
		else l=mid+1;
	}
	cout<<ans;
}

 

转载于:https://www.cnblogs.com/Leo-JAM/p/10079128.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

省选专练之神仙贪心IOI2013Robert 的相关文章

  • 用python代码实现ChatGPT平台和剪映/百度AIGC平台制作短视频的自动化的讨论

    思路 使用ChatGPT平台生成短视频的文本描述 将文本描述传入剪映 百度AIGC平台 生成短视频 代码 使用ChatGPT平台生成短视频的文本描述 import openai openai api key YOUR API KEY def
  • JAVA中的各种循环语句

    目录 一 if循环 二 if与else if循环的运用 三 while循环 四 for循环 我下面都用案例来解释和展示循环 大家结合案例和注释多加感悟 将会对Java循环有个不错了解 一 if循环 下面为一个输入成绩判定情况 public
  • 2022Java面试题大全,附答案,最新整理

    1 遍历ArrayList时如何正确移除一个元素 错误写法示例一 public static void remove ArrayList
  • vue 更改头像功能实现(结合项目)

    用VUE脚手架学习开发的一个项目 某学习软件 先分享一个更换头像的功能 真实后台接口数据 很常见的个人中心版块 重点在头像和昵称这块 首先要理清业务需求 点击头像或昵称跳转到修改信息页 下面上代码 跳转到信息填写页面 点击头像 弹出遮罩层
  • Qt 插件路径(笔记)

    Qt Manual 已经专门介绍了Deploying Plugins 的问题 半年前Qt 插件学习 一 也简单整理了一点路径相关的问题 可是 一直以来没理清 图片插件 编解码插件 数据库插件 到底是如何被加载的 走马观花 如果我们需要打开或
  • arcgis墨卡托与经纬度之间的互相转换

    使用 esri geometry webMercatorUtils 方法 经纬度转墨卡托 webMercatorUtils lngLatToXY x y 返回墨卡托坐标 merx mery 墨卡托转经纬度 webMercatorUtils
  • EasyExcel读取excel读复杂表头文件

    最近在项目开发中 遇到的一个excel复杂表头的导入数据库操作 具体怎么做 直接上代码吧 1 文件上传 把你要导入的文件上传磁盘某个目录 当然你也可以导入到项目目录下都行 该类的位置就是controller层 给用户提供一个上传文件的接口
  • 子集生成算法——增量构造法

    我的个人博客 逐步前行STEP 思路是一次选出一个元素放入集合中 生成0 n的子集 每次选出最小的值放入集合中 通过从0递增得到下一个位置的值 include
  • String常量池问题的几个例子

    String常量池问题的几个例子 示例1 Java代码 String s0 kvill String s1 kvill String s2 kv ill System out println s0 s1 System out println
  • 剑指Offer-40

    题目 一个整型数组里除了两个数字之外 其他的数字都出现了两次 找出只出现一次的数字 要求时间复杂度是 O n 空间复杂度是 O 1 实现 coding java public class Solution40 用 Hashmap 的方式 时
  • ES3~ES6数组的方法总结

    ES3数组的方法 push arr push 值 向数组的最后一个位置添加一个元素 语法 arr push 返回值 改变之后的数组的长度 改变原数组 var arr aa bb cc var res arr push dd console
  • day08-编程题

    每日作业 JavaSE第8天 题目1 训练 现已知工人 Worker 类 属性包含姓名 name 工龄 year 请编写该类 提供构造方法和get set方法 在测试类中 请查看键盘录入Scanner类的API 创建工人类对象 属性值由键盘
  • 基于STM32红外避障小车的设计(有代码)

    什么是避障小车 用红外光电传感器 探测到物体即输出脉冲 输入到单片机中处 理一下 再对电机驱动模块进行控制 实现壁障的功能 这样的避障小车又称为简单的避障机器人 各种避障方法 1 红外线避障 2 超声波避障 红外避障原理 基本硬件 红外发射
  • FATAL Port 4000 has been used. Try other port instead.

    我在另一个powershell也打开了hexo s 关掉另一个powshell就好了
  • vue移动端项目屏幕适配--flexible rem

    开始 首先 我们使用 vue 的脚手架 vue cli 来初始化一个 webpack 项目 没有安装过 vue cli 的请先安装 vue cli 安装所需依赖后安装 lib flexible 和 px2rem loader 1 下载lib
  • AOP的切入点Pointcut中的execution表达式详解

    在面向切面编程 AOP 中 切入点 Pointcut 用于定义在哪些方法或代码段上应该应用切面的逻辑 切入点使用表达式来匹配目标方法的签名和执行位置 在 Spring AOP 中 常用的切入点表达式是基于方法的 execution 表达式
  • 理解Vulkan中的各种对象

    学习Vulkan API的一个重要部分是了解其中定义了哪些类型的对象 它们代表了什么 以及它们如何相互关联 为了帮助解决这个问题 创建了一个图表 展示了所有vulkan对象及其一些关系 尤其是从另一个对象创建对象的顺序 每个vulkan对象
  • java中局部变量、全局变量和static的区别(简单易懂)

    java中的变量类型有 1 类变量 独立于方法之外的变量 用 static 修饰 2 实例变量 独立于方法之外的变量 不过没有 static 修饰 3 局部变量 类的方法中的变量 比如 Java 局部变量 局部变量声明在方法 构造方法或者语
  • 回调函数的原理及运用

    第一个问题 什么是回调函数 来看一下百度百科的定义为 回调函数就是一个通过函数指针调用的函数 如果你把函数的指针 地址 作为参数传递给另一个函数 当这个指针被用来调用其所指向的函数时 我们就说这是回调函数 回调函数不是由该函数的实现方直接调
  • hadoop环境搭建之安装JDK

    判断是否安装了jdk 使用java version 和 javac命令判断是否安装了jdk root localhost ssh java version bash java command not found root localhost

随机推荐

  • 【重铸Java根基】为什么Java中只有值传递

    最近带应届新员工 教然后知不足 发现自己把很多基础知识已经还给了大学老师 因此开贴 温故而知新 从最基础的Java知识开始由浅入深 在某个知识点中遇到有疑惑的点会额外多写几句或者单独开帖子展开 先要搞清楚什么是形参 什么是实参 形参 定义方
  • 寄存器的映射过程

  • vue学习-02vue入门之组件

    删除Vue cli预设 在用户根目录下 C Users 你的用户名 这个地址里有一个 vuerc 文件 修改或删除配置 组件 Props 组件之间的数据传递 Prop 的大小写 camelCase vs kebab case 不敏感 Pro
  • 线程同步概念

    带着问题去思考 什么是线程同步 线程同步能解决哪些问题 如何实现线程同步 线程同步是指两个或多个线程协同步调 按预期的顺序执行代码 若两个或多个线程同时写同一块内存或访问同一资源时 需线程同步 若线程A的执行依赖线程B的结果 需线程同步 输
  • 在外部js文件中直接调用vue文件中自定义的方法

    1 在vue文件引入API import getCurrentInstance onMounted from vue onMounted 用于挂载数据 getCurrentInstance 用于获取实例后再使用 2 定义setup 方法 s
  • vue——组件中的样式改变方法

    一般我们自己封装的组件或者组件库 element vant antdesign 中的样式在页面中必要的时候需要改变时 解决方法如下 解决方法 在页面中重新写一个 不要改成局部的 scope 页面中全局修改 在上一部的中 改变组件样式时 要先
  • 关于OpenAI的Gym中的step方法

    文章目录 导读 Gym的step方法 最后的话 导读 本文就只是关于step方法的参数与返回值的一个小小的学习笔记 这也是没有第一时间查官方文档而造成的时间消耗 所以 这篇博客就是逼自己查一下 Gym的step方法 既然都已经用pip下载了
  • whois命令简介

    whois命令简介 一 概述 whois是Linux Unix环境下的命令 按字面意思就是问 他是谁 通过对域名的检索 可以反馈回域名的注册信息 包括持有人 管理资料以及技术联络资料 也包括该域名的域名服务器 但是在世界上有几个主要的who
  • Contest2967 - 2022-2023-2 ACM集训队每周程序设计竞赛(1)

    问题 C 付哥题做不完了 内存限制 1024 MB时间限制 2 000 S评测方式 文本比较命题人 admin提交 323解决 44 返回比赛提交提交记录侧边提交 题目描述 付哥今天在做题 他有两个题单A和B 里面的题目数量分别为n和m 每
  • 数据库语法时用到的{},,[]等各类括号分别代表什么?

    lt gt 尖括号 用于分隔字符串 字符串为语法元素的名称 SQL语言的非终结符 定义操作符 用在生成规则中 分隔规则定义的元素和规则定义 被定义的元素位于操作符的左边 规则定义位于操作符的右边 方括号表示规则中的可选元素 方括号中的规则部
  • 推荐一些好用的小技巧给你

    技巧一 微信设置通话铃声 微信 作为一款主打移动通信的软件 没有自己专属的通话 彩铃 是否有些说不过去呢 所以我们可以在微信设置中 添加自己专属的 通话铃声 这样无论哪个好友拨打 微信电话 给你 都能听到你设置的 通话铃声 啦 操作指南 打
  • VC6添加自定义消息(主窗口向子窗口发送消息)

    从主窗口向子窗口发送消息 可以在子窗口中添加自定义的消息 然后在主窗口中需要地方呼叫该消息 呼叫方法 1 将子窗口添加为主窗口的成员变量 2 主窗口呼叫该消息 成员变量名 SendMessage UM PROGRESS 子窗口添加自定义消息
  • 连接Mysql数据库的报错: java.sql.SQLException: Unknown initial character set index ‘255’ received from server

    连接Mysql数据库的报错 java sql SQLException Unknown initial character set index 255 received from server Initial client characte
  • 树(Tree)——(一)基础知识

    目录 关于树的术语 儿子兄弟链式表示法 二叉树概念和基本特征 二叉树的形态 前序 中序 后序遍历特性 习题梳理 树存在的主要意义就是为了方便查找 如二叉树就有二分的思想 关于树的术语 1 结点的度 Degree 结点的子树个数 例如上面的图
  • qt小项目三 代码实现简易的QQ聊天界面的对话框弹出功能

    实现效果 点击成员列表中的头像 实现对应对话框弹出的功能 打开的对话框不可以再次打开 同时弹出提示消息框 打开一个窗口 再次打开该窗口 补充后的代码 myDialog cpp文件中新增信号槽处理函数 myDialog h文件中新增窗口打开状
  • QT学习之三:Qt Creator2.4.1的开发环境的配置和测试

    1 系统环境 主机操作系统 ubuntu10 04 主机编译器 gcc4 4 3 交叉编译器 arm linux gcc 4 3 2 前提条件 搭建好qt4 6 3的三个编译版本 PC X86 ARM 2 安装 Qt SDK Lin32 o
  • 极力推荐一本零基础学python的书籍,看完还没学会我也无能为力了

    python编程 上 下册 此书是由Eric Matthes撰写 他是高中科学和数学老师 现居阿拉斯加 在当地讲授Python入门课程 他从5岁就开始一直在编写程序 python编程 读者受益 该书旨在让你尽快学会Python 以便能够编写
  • Windows Maven解压版安装

    本文须知 安装maven环境之前要先安装java jdk环境 没有安装java环境的可以先去看安装JAVA环境的教程 Maven 3 3 require JDK 1 7 及以上 step1 下载maven 本教程安装的是目前最新版本3 8
  • knife Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is java.lang.NullPoi

    项目里面集成了knife swagger的升级版 结果报了空指针异常 猜测是版本或者jar冲突的问题 百度一下 有说是springboot 版本跟swagger 版本问题的 后面发现是 spring actutor 里面的guava 跟 k
  • 省选专练之神仙贪心IOI2013Robert

    问题描述 小沐把玩具扔在地板上 乱七八糟 庆幸的是 有一种特殊的机器人可以收拾玩具 不过他需要 确定哪个机器人去拣哪个玩具 一共有 T 个玩具 整数 w i 表示这个玩具的重量 整数 s i 表示这个玩具的体积 机器人有 两种 分别是 弱机