I 安装饮水机 中国石油大学新生训练赛#10
题目描述
聪明的楠楠也参与了这次比赛的筹备工作。他的任务是设计一个理想的安装饮水机方案,使得安装的饮水机最少,但又保证所有观察员都能取到水喝。
输入
第一行,仅一个整数,表示有N(0<n<=1000)个观察点。
接下来有N行,每行两个整数S(0<S<=100000)和W(0<W<=50000),其中S表示某个观察点到起点的路程,W表示该观察点中驻点观察员的体力。
输出
样例输入 Copy
4
6 3
12 2
1 5
14 5
样例输出 Copy
2
提示
int l = 0, r = n;
while(l < r)
{
int mid = l + r >> 1;
if(check(mid)) l = mid + 1;
else r = mid;
}
cout<<l;
输入数据中每个数据有两个相关数据,而且都和每个点有关,所以考虑创建结构体进行计算与输入。
之后就要写check函数,首先考虑便是按其位置从小到大排序,然后贪心,遍历每一个元素,如果当前最近饮水机位置在范围内则跳过,反之则放在当前元素的最右端(由于是按位置排序)
但是这种贪心+排序的做法并没法ac,举一组hack数据:
5
1 9999
2 1
3 8888
4 1
5 7777
这组数据如果按照上述贪心进行遍历的话,第一个饮水机位置就会更新在10000这个点 然后第二个会放在3这个点 实际上 只需要放在3这个点就可以满足所有的需要
因此需要换一种贪心方式, 观察这组hack数据,可以发现,如果按a[i] + b[i]进行由小到大的排序,便可以贪心的跑完每一种情况
所以输入数据后,将结构体数组按a[i] + b[i]由小到大排序,可以通过重写sort实现。
记得初始化饮水机位置为0x3f3f3f3f(足够大就行)
代码: 2021.12.3
/*
************************************
***********emu^w^*********** */ #include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
const int P = 13131;
#define ll long long
const int mod = 1E6 + 7;
const int INF = 0x3f, sINF = 0x3f3f3f3f;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
typedef pair<long long, long long> PLL;
int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};
//
const int N = 1010;
int n; struct answ{
int a, b;
}q[N]; bool cmp(const answ &x, const answ &y)
{
if(x.a + x.b != y.a + y.b) return x.a + x.b < y.a + y.b;
return x.a < y.a;
} bool check(int x)
{
int nums = x;
int loc = 0x3f3f3f3f;
for(int i = 1; i <= n; i++)
{
if(loc > q[i].a + q[i].b || loc < q[i].a - q[i].b) {
nums--;
loc = q[i].a + q[i].b;
}
if(nums < 0) return true;
}
return false;
} int main()
{
cin>>n;
for(int i = 1; i <= n; i++) cin>>q[i].a>>q[i].b;
sort(q + 1, q + 1 + n, cmp); int l = 0, r = n;
while(l < r)
{
int mid = l + r >> 1;
if(check(mid)) l = mid + 1;
else r = mid;
}
cout<<l;
}
I 安装饮水机 中国石油大学新生训练赛#10的更多相关文章
- C 上楼梯 中国石油大学新生训练赛#11
问题 C: 上楼梯 时间限制: 1 Sec 内存限制: 128 MB提交 状态 题目描述 明明上n 级台阶可用四种步幅, 当然每种步幅花费的体力也不一样, 对应关系如下明明开始有m 个体力, 求他最 ...
- Contest1592 - 2018-2019赛季多校联合新生训练赛第二场(部分题解)
Contest1592 - 2018-2019赛季多校联合新生训练赛第二场 D 10248 修建高楼(模拟优化) H 10252 组装玩具(贪心+二分) D 传送门 题干 题目描述 C 市有一条东西走 ...
- Contest1585 - 2018-2019赛季多校联合新生训练赛第一场(部分题解)
Contest1585 - 2018-2019赛季多校联合新生训练赛第一场 C 10187 查找特定的合数 D 10188 传话游戏 H 10192 扫雷游戏 C 传送门 题干: 题目描述 自然数中除 ...
- Contest1593 - 2018-2019赛季多校联合新生训练赛第三场(部分题解)
H 10255 自然数无序拆分 H 传送门 题干: 题目描述 美羊羊给喜羊羊和沸羊羊出了一道难题,说谁能先做出来,我就奖励给他我自己做的一样礼物.沸羊羊这下可乐了,于是马上答应立刻做出来,喜羊羊见状, ...
- 给未来的你——李开复2011级大学新生演讲
2011年09月26日08:30 来源:<中国青年报> <中国青年报>的读者朋友们: 你们肩负着中华的未来,你们身上正涌动着创新的血脉! 无论你在哪所学校,哪个城市,你都是与众 ...
- 使用docker安装部署Spark集群来训练CNN(含Python实例)
使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...
- 10.0.0.55_12-16训练赛部分writeup
0x1 - MISC MISC100 一张帅行的照片 目测是图片隐写,但是binwalk并没有出来,应该是对文件头进行了修改 010editor查看一下,发现在jpg文件尾之后还有大量的数据 而且在灰 ...
- UPC个人训练赛第十五场(AtCoder Grand Contest 031)
传送门: [1]:AtCoder [2]:UPC比赛场 [3]:UPC补题场 参考资料 [1]:https://www.cnblogs.com/QLU-ACM/p/11191644.html B.Re ...
- 2014北邮新生归来赛解题报告a-c
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...
随机推荐
- 流程控制( if while )
目录 流程控制 必知必会 分支结构 if 1.单 if 分支结构 2. if与else连用 3. if, else和 elif if 判断之嵌套 if 练习题 while 循环 while+break ...
- R数据分析:数据清洗的思路和核心函数介绍
好多同学把统计和数据清洗搞混,直接把原始数据发给我,做个统计吧,这个时候其实很大的工作量是在数据清洗和处理上,如果数据很杂乱,清洗起来是很费工夫的,反而清洗好的数据做统计分析常常就是一行代码的事情. ...
- 部署 Docker Registry 并配置认证登录
文章目录 搭建 Docker Registry 创建本地映射目录 启动 Docker Registry 配置 Docker Registry 配置 Docker Registry 认证 启动带认证的 ...
- docker为什么会出现
痛点 环境不同所引发的问题 一款产品从开发到上线,一般都会有开发环境,测试环境,运行环境. 如果有一个环境中某个软件或者依赖版本不同了,可能产品就会出现一些错误,甚至无法运行.比如开发人员在windo ...
- k8s集群搭建EFK日志平台:ElasticSearch + Fluentd + Kibana
k8s集群 kubectl get node EFK简介 ElasticSearch:分布式存储检索引擎,用来搜索.存储日志 Fluentd:日志采集 Kibana:读取es中数据进行可视化web界面 ...
- kali linux 静态地址和动态地址的设置
在文件系统里找到/etc/network下的interfaces文件,打开后可以看到eth0为dhcp,将其修改为# This file describes the network interface ...
- Ubuntu安装g++命令
Ubuntu安装g++ sudo apt-get install make gcc g++ 再装上函数手册 sudo apt-get install manpages-dev 或者采用 sudo ap ...
- 安装python和pycharm,以及常见安装问题
目录 安装python 输入第一个python程序 安装python文本编辑器pycharm 执行main.py文件出现的问题 python编码规范 python是当前很常用的一门语言了,和Java, ...
- Zabbix使用python批量添加主机及主机资产信息-从零到无
- - 时间:2020年11月10日 - - 作者:飞翔的小胖猪 前言: 使用zabbix作为基础环境的监控系统时,面对现网在用的2000+台把这些主机添加到zabbix监控中是一个问题,当然zabb ...
- centos7 下配置snort2.9 以及使用
先安装依赖文件 yum -y install epel-release //需要epel源 yum -y install gcc flex bison zlib zlib-devel libpcap ...