洛谷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的太幸运然而因同学 ...
随机推荐
- [清晰] kubernets权威指南第2版
------ 郑重声明 --------- 资源来自网络,纯粹共享交流, 如果喜欢,请您务必支持正版!! --------------------------------------------- 下 ...
- java 获取手机归属地,引起net.UnknownHostException错误
这个问题是请求,重定向了,跟入源码.修改了地址,变成302 Connection connect = Jsoup.connect(url); connect.header("Host&quo ...
- Net core 2.x 升级 3.0 使用自带 System.Text.Json 时区 踩坑经历
.Net Core 3.0 更新的东西很多,这里就不多做解释了,官方和博园大佬写得很详细 关于 Net Core 时区问题,在 2.1 版本的时候,因为用的是 Newtonsoft.Json,配置比较 ...
- 智表(ZCELL)插件产品选型说明书,市场主流插件对比,帮您选型
智表(ZCELL)插件产品选型说明书,市场主流插件对比,帮您选型. 说明书下载:地址 一. 我们为什么需要智表插件产品 客户早已养成EXCEL中的操作习惯,BS架构下,普通的网页交互,与客户习惯 ...
- Matlab相关函数使用
1.cat:拼接两个数组.
- SetCurrentCellAddressCore 函数的可重入调用
绑定数据在线程中 private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (Di ...
- python(数据精度处理)
一.取整处理 1.int() 向下取整 内置函数 1 n = 3.75 2 print(int(n))>>> 3 3 n = 3.25 4 print(int(n))>> ...
- Python——数据类型公用功能
1.索引 表示从哪里开始取值. 支持类型 str 列表 dict 不支持类型 int bool a= '1234567' print(a[1:])#指从哪开始读取,1为从1号元素开始.默认为0 pri ...
- Linux在丢失的情况下重置密码
1.开机菜单是 移动光标到第一行 --敲击e 2.找到UTF-8,加上空格rd.break,敲击ctrl+x 3.输入以下命令 mount -o remount,rw /sysroot chroot ...
- mysql Starting MySQL..The server quit without updating PID file
可能的原因和解决办法 1.可能是/usr/local/mysql/data/rekfan.pid文件没有写的权限解决方法 :给予权限,执行 chown -R mysql:mysql /var/data ...