题目传送门

思路

简单题,设函数 \(f_i\) 表示当时间为 \(i\) 时是否能够收拾好所有玩具,则 \(f_i\) 显然是单调的。

所以我们可以考虑二分。

设我们当前二分到 \(x\),我们先把 \(x\) 数组按从小到大排序,\(y\) 数组按从大到小排序。

我们先扫 \(x\) 数组,假设我们当前扫到了 \(x_i\),\(1\) 至 \(j\) 的玩具可以被 \(i\) 安放,则,贪心的想,这些玩具对于 \(x\) 数组的意义是相同的,但是这些玩具的 \(s\) 值是不同的,为了尽可能存在答案,我们需要尽量给遍历 \(y\) 数组时留下尽可能小的 \(s\) 值,所以我们选取最大的 \(x\) 个 \(s\) 值删掉。

接下来扫 \(y\) 数组,每次都尽可能删去值,若最后被删空,则成立,否则不成立。

代码

#include<bits/stdc++.h>
using namespace std;
int const N=1e6+10;
int x[N],y[N],w[N],s[N],n,m,t;
struct node{int w,s;}a[N];
inline bool cmp(node x,node y){return x.w<y.w;}
inline bool check(int lim){
priority_queue<int>q;
int r=0;
for (int i=1;i<=n;++i){
while (a[r+1].w<=x[i] && r+1<=t) q.push(a[++r].s);
int xx=lim;
while (!q.empty() && xx--) q.pop();
}
while (r<t) q.push(a[++r].s);
for (int i=1;i<=m;++i){
if (q.empty()) break;
if (q.top()>y[i]) return 0;
int xx=lim;
while (!q.empty() && xx--) q.pop();
}
if (!q.empty()) return 0;
return 1;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n>>m>>t;
for (int i=1;i<=n;++i) cin>>x[i],--x[i];sort(x+1,x+n+1);
for (int i=1;i<=m;++i) cin>>y[i],--y[i];sort(y+1,y+m+1);reverse(y+1,y+m+1);
for (int i=1;i<=t;++i) cin>>a[i].w>>a[i].s;sort(a+1,a+t+1,cmp);
int l=0,r=1e9;
while (l<r){
int mid=(l+r)>>1;
if (check(mid)) r=mid;
else l=mid+1;
}
if (l==1e9) l=-1;
cout<<l<<'\n';
return 0;
}

[IOI2013]robots 机器人的更多相关文章

  1. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  2. meta标签

    参考:http://www.jb51.net/web/158860.html META标签分两大部分:HTTP标题信息(HTTP-EQUIV)和页面描述信息(NAME). 一.HTTP标题信息(HTT ...

  3. html meta标签属性与内容

    meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用语言, ...

  4. meta标签中的http-equiv属性使用介绍(转载)

    meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用语言, ...

  5. Meta标签详解(HTML JAVASCRIPT)

    Meta标签详解,在网上转的,希望对大家有用 您的个人网站即使做得再精彩,在“浩瀚如海”的网络空间中,也如一叶扁舟不易为人发现,如何推广 个人网站,人们首先想到的方法无外乎以下几种: ● 在搜索引擎中 ...

  6. html的meta总结,html标签中meta属性使用介绍

    引用:http://www.haorooms.com/post/html_meta_ds 前言 meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta ...

  7. meta 标签的作用

    META标签,是HTML语言HEAD区的一个辅助性标签.在几乎所有的page里,我们都可以看到类似下面这段htm l代码: <head> <meta http-equiv=" ...

  8. html标签中meta属性使用介绍

    前言 meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用 ...

  9. 面试题HTML +CSS

    HTML+CSS部分1.行内元素和块级元素?img算什么?行内元素怎么转化为块级元素?行内元素:和有他元素都在一行上,高度.行高及外边距和内边距都不可改变,文字图片的宽度不可改变,只能容纳文本或者其他 ...

  10. Meta标签用法大全

    meta是html文档在head标签里定义的一个对文档进行描述的功能性标签 meta标签有下面的作用: 1.搜索引擎优化(SEO) 2.定义页面使用语言 3.自动刷新并指向新的页面 4.实现网页转换时 ...

随机推荐

  1. Vue3“直接”修改props

    父组件 import { reactive } from 'vue'; //对话框数据 const show = reactive({ isshow: false, }); //打开对话框 const ...

  2. 对象和类—Java世界的细胞

    对象和类-Java世界的细胞 今天向大家介绍我自己关于Java中对象和类的一些体会,中有不足还请大家多多指教 1.面向对象程序设计 为什么会产生面向对象 我认为人们在最初探索计算机世界时,常常会从计算 ...

  3. Python使用pipreqs生成requirements.txt

    当一个Python完成后,若要在新环境下运行,往往需要重新安装各种包依赖,这就需要记录当前环境下所用到的包.包的版本等,非常麻烦,这里介绍一种方法,可以较为快速便捷地生成requirements.tx ...

  4. vue后退页面刷新数据和缓存数据

    我们在项目中经常使用this.$router.go(-1)  但是,有时我们需要把前一个页面的数据进行缓存,有时需要刷新数据,下面来记录一下怎么操作吧 首先:在vue项目中缓存页面我们能想到 keep ...

  5. JavaScript:对象:如何复制一个对象?浅拷贝与深拷贝

    回顾一下,我们对传参的讨论,对象的传参是引用传递,我们传递的是对象数据所在的内存地址: 那么无论我们怎么去赋值,所有变量指向的都是同一块内存: 如上图所示,无论我去使用哪个变量去操作对象的属性,改变的 ...

  6. 英华学堂网课助手Linux版本

    首先我们下去GitHub把文件下载下来记得 脚本地址: https://github.com/aoaostar/mooc/releases/latest 这几个版本随便下哪个都可以,下载完之后我们通过 ...

  7. 使用nodejs编写api接口并部署到服务器上

    一.用node.js编写api接口 1.安装node环境,没有就去下载nodejs, 下载地址 2.创建一个node项目, 新建一个目录文件,例node_proxy 3.在新建的node项目执行npm ...

  8. vue3+ts 全局事件总线mitt

    Mitt 在vue3中 $ on,$off 和 $once 实例方法已被移除,组件实例不再实现事件触发接口,因此大家熟悉的EventBus便无法使用了.然而我们习惯了使用EventBus,对于这种情况 ...

  9. C#调用接口的简单流程

    1.编写url地址 string url="http://192.168"; 2.创建http请求对象 HttpWebRequest request = (HttpWebReque ...

  10. 【白话模电1】PN结与二极管

    距离上一次写半导体,已经过了很久了,上次分享了本征半导体的基本概念: https://zhuanlan.zhihu.com/p/109483580 今天给大家聊聊半导体工业中的基础:PN结与二极管 1 ...