题目

按理来说是可以二分的,但是发现其实直接暴力然后注意细节就可以了。

先找到牛所在的起点,然后分别向右找和向左找。

第一次查找从\(r\)点冲到\(l\)点时,突破不了\(l\),从\(l\)点冲到\(r\),能突破\(r\),要给\(r\)加多少,然后取\(min\),每次\(l--,r\)并不需要返回原先值,原因是l没有增加前更新过答案了,而l减小后l到r的距离会增加,不会比原答案更小,因此不需返回。也可以说l减小前就可以封住r的值,何必要让l再小一点让其撞r的冲击力更大呢。

向左找同理

会发现这样暴力的时间复杂度其实是\(O(4n+nlog_n)\)的,可以通过该题,因为向左找和向右找时间复杂度都是\(O(2n)\)的,。

#include <iostream>
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
int n, b, ans = 2147483647;
struct d
{
int s, p;
}data[100100];
int cmp(d a, d b)
{
return a.p < b.p;
}
bool flag;
int minn = 2147483647, start;
int main()
{
scanf("%d%d", &n, &b);
for (int i = 1; i <= n; i++)
scanf("%d%d", &data[i].s, &data[i].p);
sort(data + 1, data + 1 + n, cmp);
for (int i = 1; i <= n; i++)
if (data[i].p < b && data[i + 1].p > b)
start = i + 1;
int ha = start; //
for (int i = start - 1; i >= 1; i--)//i left, ha right
{
while (ha <= n && data[ha].p - data[i].p <= data[i].s)//当从右向左撞,撞不破时才可以,撞得破的话,就i--看能不能再撞一个
{
ans = min(ans, data[ha].p - data[i].p - data[ha].s);//
ha++;
}
}
ha = start - 1;
for (int i = start; i <= n; i++)//可以从start到i时
{
while (ha >= 1 && data[i].p - data[ha].p <= data[i].s)
{
ans = min(ans, data[i].p - data[ha].p - data[ha].s);
ha--;
}
}
if (ans == 2147483647)
printf("-1");
else
if (ans < 0)
printf("0");
else
printf("%d", ans);
return 0;}

洛谷P3124被困在haybales的更多相关文章

  1. 洛谷 P3184 [USACO16DEC]Counting Haybales数草垛

    P3184 [USACO16DEC]Counting Haybales数草垛 题目描述 Farmer John has just arranged his NN haybales (1 \leq N ...

  2. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  3. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  4. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  5. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  6. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  7. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

  8. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  9. 洛谷八月月赛Round1凄惨记

    个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...

随机推荐

  1. ApachShiro 一个系统 两套验证方法-(后台管理员登录、前台App用户登录)同一接口实现、源码分析

    需求: 在公司新的系统里面博主我使用的是ApachShiro 作为安全框架.作为后端的鉴权以及登录.分配权限等操作 管理员的信息都是存储在管理员表 前台App 用户也需要校验用户名和密码进行登录.但是 ...

  2. Matalb中英双语手册-年少无知翻译版本

    更新: 20171207: 这是大学期间参加数模翻译的手册 正文: 愚人节快乐,突然发现自己在博客园的一篇文章.摘取如下: MATLAB 语言是一种工程语言,语法很像 VB 和 C,比 R 语言容易学 ...

  3. VS使用日常

    一.快捷键 1.Ctrl R+E    选中变量快捷自动生成属性

  4. 强大的VIM

    个人感觉,vim用熟了,比任何编辑器都好用,VIM的许多特性节省了时间和击键次数,并可以完成一些其他编辑器无法完成的功能,这里在网上找了几个经典案例,记录一下. 与大部分其它编辑器不同,进入 Vim ...

  5. Python接口自动化基础---环境准备

    安装requests模块 pip install requests request帮助文档查看 import requests print(help(requests)) Help on packag ...

  6. 《Linux》跟老男孩学Linux核心系统命令

    一.命令行简介 1.1 Linux 命令行提示符介绍 [root@root_pc ~]# #<==这是超级管理员root用户对应的命令行 [oldboy@oldboy_pc ~]$ #<= ...

  7. object-c 连接mysql

    1. 通读 'mysql的使用' 2. 在Target->build setting 修改配置 User Header Search Paths 加入 /usr/local/mysql/incl ...

  8. 如何获取jar包中resource下的文件

    maven工程打jar包,部署到服务器上以后,获取resource下文件的绝对路径是找不到该文件的 只能用流的方式获取,代码如下: import lombok.extern.slf4j.Slf4j; ...

  9. Java编程规范(命名规则)

    1.目的 编程规范是对编程的一种约定,主要作用是增强代码的可读性和可维护性,便于代码重用. 2.命名规则 首先要求程序中的各个要素都遵守命名规则,然后在编码中严格按照编码格式编写代码.命名规则包括以下 ...

  10. UNTIY Canvas

    一.Canvas 组件 Render Mode(渲染模式) (1)Screen Space-Overlay:2D UI,始终显示在屏幕最前方,适合制作HP,MP等(相当于GUI) (2)Screen ...