http://acm.hdu.edu.cn/showproblem.php?pid=5699

此题满足二分性质,关键在于如何判断当前的时间值可以满足所有的运送方案中的最长的时间。

对于每一次枚举出的k,对于朴素时间就不大于这个值的方案显然满足,剩下的方案耗费的时间都大于k,换句话说剩下的方案如果想满足k就必须要通过传送点,才有可能实现。

对于 (Li,Ri)  通过传送点(L,R)的时间就是   abs(Ri-R)+abs(Li-L)

传送点与路径的情况有四种

L_________R           L______________R                   L___________R                  L_________R

Li_____________Ri        Li_________Ri                 Li_________Ri                                      Li_________Ri

一开始思维僵化固执的以为L的值一定出现在Li的右侧,所以用了贪心来决策,后来才意识到其实可以从出发点先走到传送点,从传送点再走到目的点!

我们不难得出式子    abs(Ri-R)+abs(Li-L)<=k

将abs拆开就是四个式子:

  1. Ri-R+Li-L<=k;
  2. Ri-R-Li+L<=k;
  3. R-Ri+Li-L<=k;
  4. R-Ri-Li+L<=k;

由1,4得 :       5.Ri+Li-k<=R+L<=k+Li+Ri

由2,3得:        6. Li-Ri-k<=R-L<=Li-Ri+k

虽然可以有这两个式子直接推出LR的范围

7.    Li-k<=L<=Li+k

8.   Ri-k<=R<=Ri+k

但是这并不是一个充要条件!

5,6成立则7,8也成立,但是7,8成立5,6却不一定成立,所以无法直接依据7,8判定。

我们不难统计出这四个边界得值,最后判断一下是否存在合法的区间使得LR存在即可

 #include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
int pl[],pr[];
bool ok(int k,int m)
{
int i,j,a=-inf,c=-inf,b=inf,d=inf;
for(i=;i<=m;++i){
if(pr[i]-pl[i]<=k) continue;
a=max(a,pl[i]+pr[i]-k);
c=max(c,pl[i]-pr[i]-k);
b=min(b,pl[i]+pr[i]+k);
d=min(d,pl[i]-pr[i]+k);
}
return a <= b&&c <= d;
} int main()
{
int n,m,i,j,k;
while(cin>>n>>m){
for(i=;i<=m;++i){
scanf("%d%d",pl+i,pr+i);
if(pl[i]>pr[i])
swap(pl[i],pr[i]);
}
int l=,r=n,mid;
while(l<r){
mid=l+(r-l)/;
if(ok(mid,m)) r=mid;
else l=mid+;
}cout<<l<<endl;
}
return ;
}

HDU 5699 二分+线性约束的更多相关文章

  1. hdu 4024 二分

    转自:http://www.cnblogs.com/kuangbin/archive/2012/08/23/2653003.html   一种是直接根据公式计算的,另外一种是二分算出来的.两种方法速度 ...

  2. HDU 5699 货物运输 二分

    货物运输 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5699 Description 公元2222年,l国发生了一场战争. 小Y负责领导工人运输物 ...

  3. HDU 5699 货物运输 二分判定

    转自:http://blog.csdn.net/jtjy568805874/article/details/51480479 #include <cstdio> #include < ...

  4. hdu 1669(二分+多重匹配)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1669 思路:由于要求minimize the size of the largest group,由此 ...

  5. HDU 3586 二分答案+树形DP判定

    HDU 3586 『Link』HDU 3586 『Type』二分答案+树形DP判定 ✡Problem: 给定n个敌方据点,1为司令部,其他点各有一条边相连构成一棵树,每条边都有一个权值cost表示破坏 ...

  6. hdu 4004 (二分加贪心) 青蛙过河

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4004 题目意思是青蛙要过河,现在给你河的宽度,河中石头的个数(青蛙要从石头上跳过河,这些石头都是在垂 ...

  7. hdu 5046 二分+DLX模板

    http://acm.hdu.edu.cn/showproblem.php?pid=5046 n城市建k机场使得,是每个城市最近机场的距离的最大值最小化 二分+DLX 模板题 #include < ...

  8. hdu 3277(二分+最大流+拆点+离线处理+模板问题...)

    Marriage Match III Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  9. hdu 3081(二分+并查集+最大流||二分图匹配)

    Marriage Match II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

随机推荐

  1. 核心动画(CAKeyframeAnimation,CABasicAnimation)

    一,核心动画常用的三种例子 view的核心动画其体现就是把view按照指定好的路径进行运动,针对的是view的整体. [view.layer addAnimation:动画路径 forKey:@“绑定 ...

  2. 搜狗员工用百度算什么,谷歌员工当着老板的面用bing,结果悲剧了!

    之前看到一篇文章,写的是搜狗的员工遇到问题时,用百度,结果网友的评论真是亮瞎眼.今天,W3Cschool小师妹将为大家分享一个类似的故事,那就是谷歌员工当着老板的面,竟然用BING. 这位谷歌员工称, ...

  3. 基于TSUNG对MQTT进行压力测试-测试结果

    一.TSUNG压测前概念温习 https://www.cnblogs.com/lingyejun/p/7898873.html 二.TSUNG在服务器上的安装步骤 Tsung压测时总连接数 = 本机可 ...

  4. ipython安装(python3.6.1)

    之前一直是在Python2.7环境下装的ipython,今天想在Python3环境下安装,主要是为了方便测试,按tab键可以补全,显示导入模块的方法. 1.首先安装Python3.6.1 wget h ...

  5. 使用sql语句创建 表空间 和用户,以及如何彻底删除表空间和用户,使用命令导出和导出数据库

    创建表空间有很多种方式,在安装好oracle 11g 后在网站上 https://localhost:1158/em 手动创建也可以,但是没有sql直接生成方便,下面介绍下如何用sql语句直接生成表空 ...

  6. Web安全学习笔记之Nmap脚本编写

    0x00 Nmap脚本简介 夜无眠,看了一下Nmap官方的英文API文档(全是English),瞬间心态崩塌,不想吐槽它们的nmap官网前端太丑了=.=,但是都是大牛啊,挺敬佩开源开发者的. Nmap ...

  7. Python3.x:将数据下载到xls时候用xml格式保存一份读取内容

    Python3.x:将数据下载到xls时候用xml格式保存一份读取内容 核心代码: import json import xml.dom.minidom from urllib import requ ...

  8. Git与TortoiseGit使用方法

               下载这两个工具 Git地址:https://git-for-windows.github.io/ TortoiseGit地址:http://tortoisegit.org/ 点击 ...

  9. 20145303刘俊谦 《Java程序设计》第十周学习总结

    教材学习内容总结 网络编程 就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴.在发送和接收数据时,大部 ...

  10. 20145321 《Java程序设计》第2周学习总结

    20145321 <Java程序设计>第2周学习总结 教材学习内容总结 一.类型.变量.运算符 1.类型(基本类型) (1)整数:short(占2字节),int(占4字节),long(占8 ...