白书上的例题。

每种航班可以选择两种时间降落,如果想任意航班降落时间差的最小值最大,应该如何安排?

二分时间,如果两个时间只差小于当前枚举的时间,说明这条边不可选,可以根据2sat的方法构图。

然后判断安排方案是否合法即可。

召唤代码君:

#include <iostream>
#include <cstdio>
#include <cstring>
#define maxn 5555
#define maxm 26666666
using namespace std; int to[maxm],next[maxm],first[maxn],edge;
int t[maxn],Q[maxn],top=;
int n,m;
bool mark[maxn]; int abs(int x)
{
return x>=?x:-x;
} void addedge(int U,int V)
{
edge++;
to[edge]=V,next[edge]=first[U],first[U]=edge;
} bool dfs(int cur)
{
if (mark[cur^]) return false;
if (mark[cur]) return true;
Q[++top]=cur,mark[cur]=true;
for (int i=first[cur]; i!=-; i=next[i])
if (!dfs(to[i])) return false;
return true; } bool check(int x)
{
edge=-;
for (int i=; i<=n+n+; i++) first[i]=-,mark[i]=false;
for (int i=; i<=n+n+; i++)
for (int j=(i|)+; j<=n+n+; j++)
if (abs(t[i]-t[j])<x) addedge(i,j^),addedge(j,i^);
for (int i=; i<=n+n; i+=)
{
if (mark[i] || mark[i+]) continue;
top=;
if (!dfs(i))
{
while (top) mark[Q[top--]]=false;
if (!dfs(i+)) return false;
}
}
return true;
} int main()
{
while (scanf("%d",&n)!=EOF)
{
for (int i=; i<=n; i++) scanf("%d%d",&t[i+i],&t[i+i+]);
int l=,r=,mid;
while (l<r)
{
mid=(l+r+)>>;
if (check(mid)) l=mid;
else r=mid-;
}
printf("%d\n",l);
}
return ;
}

UVAlive3211_Now or later的更多相关文章

随机推荐

  1. pycharm安装第三方库失败解决办法

    一.报错信息:[file][Default Settint]---Project Interpreter 点击 搜索suds安装模块报错 解决:依据上图提示找到C:\Program Files\Jet ...

  2. 资产管理系统 CMDB 讲解

    两年前笔者在一个中小型互联网公司做运维,当时我们经理在机房,花了半天找一台服务器,但是服务器搞错了,悲剧了^.^! 当时我们的做法是用了一个 Excel,很多时候更新不及时,重启一台机器.拔一根网线都 ...

  3. JetBrains全家桶使用攻略

    JetBrains全家桶使用攻略 今天狠狠心某宝买了一个key,可以使用15款开发软件,在此进行记录. 全家桶链接:https://www.jetbrains.com/products.html?fr ...

  4. 《杜增强讲Unity之Tanks坦克大战》6-发射子弹

    6 发射子弹 本节完成发射子弹的功能,最终代码如下:   image 首先,发射子弹得确定发射的位置和方向,还有发射的初始速度.具体的发射速度和按下发射按键的时间长短有关,这个关于子弹的蓄力我们在第九 ...

  5. .Net MVC缓存

    https://www.cnblogs.com/JoeSnail/p/7993903.html

  6. IDEA 2018 最新激活码 License server

    IDEA 2018 最新激活码 License server 总会有一个属于适合你的!嘻嘻 http://hb5.s.osidea.cc:1017 http://idea.youbbs.org htt ...

  7. GO/GOLANG程序员笔记大全

    ---------------------------------------- go 并发 // 注解:go 语言天生为程序并发所设计,可以说go的强项就是在cpu并发上的处理. // go 语言层 ...

  8. 查看linux端口对应的进程id

    例如:查看占用4040端口的进程 ss -lptn 'sport = :4040'

  9. oAuth2.0在laravel5.2中的简单应用

    oAuth是一个关于授权的开放网络标准,目前的版本是2.0.laravel是php开发框架,目前最新稳定版本是5.5.授权在应用程序中有非常广泛的使用场景,本文将以laravel5.2为例来简单介绍o ...

  10. Django_事务

    介绍 函数说明 from django.db import transaction transaction.atomic # 原子性操作,把一系列操作当做一个整体,错了则集体回退 transactio ...