洛谷P3124被困在haybales
按理来说是可以二分的,但是发现其实直接暴力然后注意细节就可以了。
先找到牛所在的起点,然后分别向右找和向左找。
第一次查找从\(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的更多相关文章
- 洛谷 P3184 [USACO16DEC]Counting Haybales数草垛
P3184 [USACO16DEC]Counting Haybales数草垛 题目描述 Farmer John has just arranged his NN haybales (1 \leq N ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
- 洛谷P1371 NOI元丹
P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交 讨论 题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...
- 洛谷P1538迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
- 洛谷八月月赛Round1凄惨记
个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...
随机推荐
- 关于Python中的可变对象与不可变对象的区别(转)
转自:https://blog.csdn.net/rookinzhang/article/details/80259857 Python中可变对象和不可变对象:https://www.cnblogs. ...
- showModalDialog的使用方法
基本介绍: showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showModalDial ...
- Layui学习笔记(一)—— 关于模块的扩展
在使用layui的时候,总有官方自带模块不够用想自己扩展的时候,这时候我们就需要扩展模块了. 模块扩展有两种: (一)普通地扩展 layui.define( function (exports) { ...
- Flask初识之安装及HelloWord程序
Python 现阶段三大主流Web框架 Django Tornado Flask 对比 1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不管你用 ...
- ECSHOP v3.0 数据库字典
商品相关表 商品分类表 category 此表用来维护商品分类信息 字段名 字段描述 字段类型 默认值 索引 cat_id 分类编号 smallint(5) unsigned 自增 PK cat_na ...
- c#测量字体宽度
Bitmap image_size = * count, f.Height);//初始化大小 Graphics size_g = Graphics.FromImage(image_size); Siz ...
- HashMap的put()与扩容
1. put() final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { HashMap.Nod ...
- Mybatis中传递多个参数的方法总结
一.单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList&q ...
- pom中添加插件打包上传源码
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> ...
- [ipsec][crypto] 有点不同的数字证书到底是什么
前言 前言是在写完了全文之后回头补的.本意是想完全抽象的把证书的抽象逻辑意义表达出来,因为你能找到的大部分 资料都深陷在技术细节与行业规范里.只有其型没有其理,没有什么比理解一个事物的内在合理性更有乐 ...