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) ...
随机推荐
- 基于TMS320C6670的软件无线电核心板
一.板卡概述 北京太速科技自主研发的TMS320C6670核心板,采用TI KeyStone系列的四核定点/浮点DSP TMS320C6670作主处理器.板卡引出处理器的全部信号引脚,便于客户二次开发 ...
- Spring MVC项目快速搭建(编程模型)
1)配置DispatcherServlet前端控制器(web配置) 2)将xml文件路径告诉Spring MVC(DispatcherServlet) 以上两步等价于继承了WebApplication ...
- 字段是字段,属性是属性,字段不是属性,属性看getter或setter
1.看图猜字段和属性 2.结果是一个属性[字段麻,太明目张胆啦,就是2啦],又是哪个属性能够显示出来呢? 3.这是为什么呢? 让我们回到javabean的课堂~~~ ★ javaBean中的prope ...
- [题解]第十一届北航程序设计竞赛预赛——I.神奇宝贝大师
题目描述 一张n*m的地图,每个格子里面有一定数量的神奇宝贝,求一个最优位置,使得所有神奇宝贝到该位置的曼哈顿距离最小. 一共有T组数据,每组数据包含两行,第一行是n和m(1<=n,m<= ...
- 100G/40G/25G/10G网络测试解决方案
一.100G概述 随着CDN等视频直播业务和P2P业务的快速发展,带宽的要求越来越高.当前5G业务势头正盛,其基于400G的主干网络通信业务也在积极部署之中.但当前在很多的业务场景中,100G系统的部 ...
- 浅谈bi工具的含义和不同类型
什么是BI工具? 商业智能(BI)工具是利用一组方法和技术来准备,呈现和帮助分析数据的工具.通过此过程,数据将转化为可操作的业务信息,帮助决策者和最终用户做出更有效的数据驱动决策. 商业智能使用的一 ...
- 思迈特软件Smartbi:利用大数据为产业赋能,且看这家风电巨头的实践之路!
随着大数据技术成为各行各业转型升级的"新动能",数字化风电.智慧风电场也成为风电行业的高频词,大数据已经逐渐被用于风场从测风到运维的各个环节. Smartbi的某客户是国内风电装备 ...
- 使用helm安装nfs-subdir-external-provisioner实现动态创建存储
存储组件 nfs-subdir-external-provisioner 是一个存储资源自动调配器,它可用将现有的 NFS 服务器通过持久卷声明来支持 Kubernetes 持久卷的动态分配.此组件是 ...
- 安装CentOS7出现dracut:/#……time解决办法
当选择install CentOS7以后一会就会出现错误.报错信息:就是dracut:/# ... timeout一大堆.我本来以为是我的启动盘没做好,后来我又重做了好几次都是这问题. 解决 通过搜索 ...
- csv 转换为DBF文件的方法
转至:https://www.cnblogs.com/hssbsw/archive/2012/12/01/2797140.html csv 转换为DBF文件的方法 最近从SQL导出了许多CSV文件发到 ...