HDU 5699 二分+线性约束
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拆开就是四个式子:
- Ri-R+Li-L<=k;
- Ri-R-Li+L<=k;
- R-Ri+Li-L<=k;
- 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 二分+线性约束的更多相关文章
- hdu 4024 二分
转自:http://www.cnblogs.com/kuangbin/archive/2012/08/23/2653003.html 一种是直接根据公式计算的,另外一种是二分算出来的.两种方法速度 ...
- HDU 5699 货物运输 二分
货物运输 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5699 Description 公元2222年,l国发生了一场战争. 小Y负责领导工人运输物 ...
- HDU 5699 货物运输 二分判定
转自:http://blog.csdn.net/jtjy568805874/article/details/51480479 #include <cstdio> #include < ...
- hdu 1669(二分+多重匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1669 思路:由于要求minimize the size of the largest group,由此 ...
- HDU 3586 二分答案+树形DP判定
HDU 3586 『Link』HDU 3586 『Type』二分答案+树形DP判定 ✡Problem: 给定n个敌方据点,1为司令部,其他点各有一条边相连构成一棵树,每条边都有一个权值cost表示破坏 ...
- hdu 4004 (二分加贪心) 青蛙过河
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4004 题目意思是青蛙要过河,现在给你河的宽度,河中石头的个数(青蛙要从石头上跳过河,这些石头都是在垂 ...
- hdu 5046 二分+DLX模板
http://acm.hdu.edu.cn/showproblem.php?pid=5046 n城市建k机场使得,是每个城市最近机场的距离的最大值最小化 二分+DLX 模板题 #include < ...
- hdu 3277(二分+最大流+拆点+离线处理+模板问题...)
Marriage Match III Time Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- hdu 3081(二分+并查集+最大流||二分图匹配)
Marriage Match II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
随机推荐
- CCoolBar 的替代方案 CDockablePane。
(阅读受众需有一定MFC知识储备.) (技术支持:http://www.cnblogs.com/shuhaoc/archive/2011/06/26/cdockableform.html) 在以往很多 ...
- Objective-C中的alloc和init问题
从开始学的NSString *name=[[NSString alloc] init] 起,仅仅这句话是分配内存空间,一直在用,从来没考虑过它的内部是怎么实现的.今天无意中看到了这一句代码: NSSt ...
- PHP压缩与解压Zip(PHPZip类)
<?php class PHPZip { private $ctrl_dir = array(); private $datasec ...
- The Air Jordan 4 Oreo Remastered would be re-released in 2015
May be the Jordan 4 Oreo probably the most anticipated pair among the remastered Jordans for 2015? W ...
- C# 将 HTML 转换为图片或 PDF
首先是把 HTML 转换为图片. public partial class Form1 : Form { public Form1() { InitializeComponent(); } WebBr ...
- 参数或变量中有语法错误。 服务器响应为: mail from address must be same as authorization user
企业qq发邮件失败,提示: 参数或变量中有语法错误. 服务器响应为: mail from address must be same as authorization user 解决办法: 登录邮箱,设 ...
- [笔记] Ubuntu 18.04源码安装caffe流程
虽然Ubuntu 18.04可以通过apt安装caffe,但是为了使用最新的代码,还是值得从源码安装一遍的. 安装环境 OS: Ubuntu 18.04 64 bit 显卡: NVidia GTX 1 ...
- PKU 3020 Antenna Placement(拆点+最小边覆盖)(最大匹配)
题目大意:原题链接 一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市.问至少放置多少个基站才能使得所有的城市都覆盖无线? 提示:看清楚题目,' ...
- express+mongodb+mongoose增删改查
增加 修改 删除 数据库 这是一个前后端分离的项目前端项目地址:https://gitee.com/dingshao/express_qd.git后端项目地址:https://gitee.com/di ...
- 杭电1020Encoding
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1020 题目: Problem Description Given a string containing ...