公元2222年,l国发生了一场战争。
  小Y负责领导工人运输物资。
  其中有m种物资的运输方案,每种运输方案形如li,ri。表示存在一种货物从li运到ri。
  这里有n个城市,第i个城市与第i+1个城市相连(这里1号城市和n号城市并不相连),并且从i号城市走到i+1号或者从i+1号走到i号需要耗费1点时间。
  由于高科技的存在,小Y想到了一种节省时间的好方案。在X号城市与Y号城市之间设立传送站,只要这么做,在X号城市走到Y号城市不需要耗费时间,同样的,从Y号城市走到X号城市也不需要耗费时间。
  但是为了防止混乱,只能设立这么一条传送站。
  现在这些运输方案同时进行,小Y想让最后到达目的地的运输方案时间最短。

  在样例中,存在两条运输方案,分别是1号城市到3号与2号到4号,那么我们在2号城市与3号城市建立传送站,这样运输方案时间最长的只需要1点时间就可以了。
 Input
  第一行两个整数n,m(1<=n,m<=500000)。
  接下来m行,每行两个整数li,ri(1<=li,ri<=n)。(若li=ri,则不需要耗费任何时间)
 Output
  一个数表示答案。

  依旧是看了题解。。二分答案mid,假设传送站修在X--Y,那么对于每个R-L>mid的方案L-->R,就只能走L-->X-->Y-->R。

  如果L>X,那么abs(R-Y)<=mid-(L-x),即 R-(mid-(L-X)) <=Y<= R+(mid-(L-X))

  可以发现。。只考虑可行性的话,X是可以丢掉的。。。L<=X同理

  那么只要枚举X,记录L<=X的所有方案的区间交,还有L>X的所有方案的区间交。。只要两个区间交非空就合法了。

 #include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#define ll long long
#define ui unsigned int
#define ull unsigned long long
const int maxn=,inf=;
struct zs{int l,r;}a[maxn];
struct zs1{int l,r,l1,r1,l2,r2;}b[maxn];
int l1[maxn],r1[maxn];
int i,j,k,n,m,mx;
ll ans; int ra,fh;char rx;
inline int read(){
rx=getchar(),ra=,fh=;
while((rx<''||rx>'')&&rx!='-')rx=getchar();
if(rx=='-')fh=-,rx=getchar();
while(rx>=''&&rx<='')ra*=,ra+=rx-,rx=getchar();return ra*fh;
}
inline int max(int a,int b){return a>b?a:b;}
inline int min(int a,int b){return a<b?a:b;}
inline void maxs(int &a,int b){if(b>a)a=b;}
inline void mins(int &a,int b){if(b<a)a=b;}
inline bool check(int mid){
int cnt=,l2,r2;register int i;
for(i=;i<=n;i++)if(a[i].r-a[i].l>mid)
cnt++,
b[cnt].l=a[i].l,b[cnt].r=a[i].r,
b[cnt].l1= a[i].l+a[i].r-mid,b[cnt].r1=-a[i].l+a[i].r+mid,
b[cnt].l2=-a[i].l+a[i].r-mid,b[cnt].r2= a[i].l+a[i].r+mid;
l1[mx+]=l2=-inf,r1[mx+]=r2=inf;int top=cnt;
for(i=mx;i;i--){
l1[i]=l1[i+],r1[i]=r1[i+];
while(top&&b[top].l>=i)
maxs(l1[i],b[top].l1),mins(r1[i],b[top].r1),top--;
}top=;
for(i=;i<=mx;i++){
while(top<=cnt&&b[top].l<=i)
maxs(l2,b[top].l2),mins(r2,b[top].r2),top++;
if(l1[i]-i<=r1[i]+i&&l2+i<=r2-i)
if(!(r1[i]+i<l2+i||(l1[i]-i>r2-i)))
return /*printf("X:%d %d--%d %d--%d\n",i,l1[i]-i,r1[i]+i,l2+(i),r2-(i)),*/;
}return ;
} bool operator <(zs a,zs b){return a.l<b.l;}
int main(){
mx=read(),n=read();int l=,r=,mid;
for(i=;i<=n;i++){
a[i].l=read(),a[i].r=read();
if(a[i].l>a[i].r)std::swap(a[i].l,a[i].r);
r=max(r,a[i].r-a[i].l);
}
std::sort(a+,a++n);
while(l<r)if(check(mid=l+r>>))r=mid;else l=mid+;
printf("%d\n",l);
}

[51nod1671]货物运输的更多相关文章

  1. 【LCA&倍增】货物运输 @upcexam5909

    时间限制: 1 Sec 内存限制: 128 MB 题目描述 在一片苍茫的大海上,有n座岛屿,岛屿与岛屿之间由桥梁连接,所有的岛屿刚好被桥梁连接成一个树形结构,即共n-1架桥梁,且从任何一座岛屿出发都能 ...

  2. HDU 5699 货物运输 二分

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

  3. Django自学计划之集装箱货物运输物流仓储一站式ERP系统

    业余开始学习时间:2018年1月 业余学习时间段:每天下班晚饭后时间+无事的星期六和星期天+上班时的空闲时间 自学目标: 1.我们要用管理的思维来写我们的系统! 2.我们要用我们的ERP系统帮助中小集 ...

  4. 51nod1671【货物运输】

    开始天真的我以为这道题和运输计划是一样的套路.于是写了一发,debug后发现过了第一个点,十分开心的交了一发,结果只过了第一个点.后来发现这个并不是一样的,因为修建黑洞之后路径法变了,而运输计划没有( ...

  5. 货物运输 51Nod - 1671

    公元2222年,l国发生了一场战争. 小Y负责领导工人运输物资. 其中有m种物资的运输方案,每种运输方案形如li,ri.表示存在一种货物从li运到ri. 这里有n个城市,第i个城市与第i+1个城市相连 ...

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

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

  7. bzoj1003 物流运输

    Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...

  8. 【BZOJ1003】【ZJOI2006】物流运输

    1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2556  Solved: 1008[Submit] ...

  9. BZOJ 1003 物流运输 题解 【SPFA+DP】

    BZOJ 1003 物流运输 题解 Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的 ...

随机推荐

  1. [WinForm]委托应用①——窗口之间方法/控件调用

    不传参数 第二窗口:public partial class Form2 : Form { /// <summary> /// 定义委托 /// </summary> publ ...

  2. Winccflexable触摸屏的报警

    1.报警的分类 2.自定义报警分类 3.报警组成 4.Winccflexable中预定义的报警类别 5.报警的确认 6.WinccFlexable报警的显示 1)报警视图 2)报警窗口 3).报警指示 ...

  3. windows net 命令(转载)

    CMD-NET命令详解 net命令大全,net命令用法,net网络命令,net命令使用,net命令集,net命令介绍,net常用命令,net命令的使用技巧,net命令如何使用 大家在操作Windows ...

  4. 关于table布局的推荐使用原因

    一.关于table布局的性能 1.table标签比其他html标签占用更多字节,导致下载时间延迟,占用服务器更多的流量资源: 2.table会阻碍浏览器渲染引擎的渲染顺序,导致页面生成的延迟,造成不良 ...

  5. Error in library(DESeq2) : 不存在叫‘DESeq2’这个名字的程辑包

    Error in read.dcf(file.path(pkgname, "DESCRIPTION"), c("Package", "Type&quo ...

  6. [编织消息框架][JAVA核心技术]异常基础

    Java异常体系结构 Thorwable类所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常. 其中异常类Exception又分为运行时异常(RuntimeExcept ...

  7. 数组a[n]中存放1-n中的n-1个数,给出算法找出重复的那一个数

    问题描述: 数组a[n]中存放1-n中的n-1个数,给出算法找出重复的那一个数. 算法一: 对数组a[n]进行冒泡排序,如果冒泡所得的最值和前一个最值相等,则该最值为重复的数. 分析: 该算法时间复杂 ...

  8. Head First设计模式之责任链模式

    一.定义 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止. 主要解决:职责链上的处理者负责处理请求,客户只需要将请求 ...

  9. grpc介绍

    grpc入门(一) 一.什么是grpc grpc是谷歌开源的一款高性能的rpc框架 (https://grpc.io),可以使用protocol buffers作为IDL(Interface Defi ...

  10. JavaScript 浏览器类型及版本号

    项目中偶尔用到判断浏览器类型及相关版本问题,现记录相关代码: function getBrowserVertion(userAgent) { var browserName, browserVersi ...