HDU 5699 货物运输 二分判定

Posted shuguangzw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 5699 货物运输 二分判定相关的知识,希望对你有一定的参考价值。

转自:http://blog.csdn.net/jtjy568805874/article/details/51480479

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long LL;
const int N=1e6+5;
const int INF=0x3f3f3f3f;
struct Node{
  int l,r;
}p[N];
int n,m;
bool judge(int x){
  int mn1=INF,mx1=-INF,mn2=INF,mx2=-INF;
  for(int i=0;i<m;++i){
    if(p[i].r-p[i].l<=x)continue;
    mn1=min(mn1,p[i].l+p[i].r+x);
    mx1=max(mx1,p[i].l+p[i].r-x);
    mn2=min(mn2,p[i].r-p[i].l+x);
    mx2=max(mx2,p[i].r-p[i].l-x);
  }
  if(mn1>=mx1&&mn2>=mx2)return true;
  return false;
}
int main(){
    while(~scanf("%d%d",&n,&m)){
       for(int i=0;i<m;++i){
        scanf("%d%d",&p[i].l,&p[i].r);
        if(p[i].l>p[i].r)swap(p[i].l,p[i].r);
       }
       int l=0,r=n;
       while(l<r){
         int mid=(l+r)>>1;
         if(judge(mid))r=mid;
         else l=mid+1;
       }
       printf("%d\\n",(l+r)>>1);
    }
    return 0;
}
View Code

 

以上是关于HDU 5699 货物运输 二分判定的主要内容,如果未能解决你的问题,请参考以下文章

HDU 5971 二分图判定

HDU 2444 The Accomodation of Students 二分图判定+最大匹配

hdu5285-wyh2000 and pupil-(染色法二分图判定)

HDU - 2444 The Accomodation of Studentsp[二分图判定,匈牙利算法]

hdu 3118 Arbiter

hdu5715 XOR 游戏 [2016百度之星复赛D题]