题意:

  有n架飞机需要着陆。每架飞机有两种选择,早着陆或者晚着陆,二选其一。现在为了保证飞机的着陆安全,要求两架着陆的飞机的时间间隔的最小值达到最大。

分析:

  最小值最大问题我们想到二分答案。对于猜测值x,判断是否有一种方案使相邻两着陆时间都不小于x。

  如果两架飞机的某着陆时间差小于p,证明不能同时选择。根据这个条件建图,再用2-SAT判断是否有解即可。

代码如下:

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#define Maxn 2010
#define Maxm 10000010 int n;
int first[*Maxn],mark[*Maxn],s[*Maxn];
int a[Maxn],b[Maxn];
int c,v; struct node
{
int x,y,next;
}t[*Maxm];int len; int mymax(int x,int y) {return x>y?x:y;}
int myabs(int x) {return x<?-x:x;} void ins(int x,int y)
{
t[++len].x=x;t[len].y=y;
t[len].next=first[x];first[x]=len;
} bool dfs(int x)
{
if(mark[x^]) return ;
if(mark[x]) return ;
mark[x]=;
s[++c]=x;
for(int i=first[x];i;i=t[i].next)
if(!dfs(t[i].y)) return ;
return ;
} bool solve()
{
memset(mark,,sizeof(mark));
for(int i=;i<n;i++)
if(!mark[*i]&&!mark[*i+])
{
c=;
if(!dfs(*i))
{
while(c>) mark[s[c--]]=;
if(!dfs(*i+)) return ;
}
}
return ;
} bool check(int x)
{
memset(first,,sizeof(first));len=;
for(int i=;i<=n;i++)
for(int j=i+;j<=n;j++)
{
if(myabs(a[i]-a[j])<x) {ins((i-)*,(j-)*+); ins((j-)*,(i-)*+);}
if(myabs(a[i]-b[j])<x) {ins((i-)*,(j-)*); ins((j-)*+,(i-)*+);}
if(myabs(b[i]-a[j])<x) {ins((i-)*+,(j-)*+); ins((j-)*,(i-)*);}
if(myabs(b[i]-b[j])<x) {ins((i-)*+,(j-)*); ins((j-)*+,(i-)*);}
}
return solve();
} void ffind(int l,int r)
{
int mid;
while(l<r)
{
mid=(l+r+)>>;
if(check(mid)) l=mid;
else r=mid-;
}
printf("%d\n",l);
} int main()
{
while(scanf("%d",&n)!=EOF)
{
int mx=;
for(int i=;i<=n;i++)
{
scanf("%d%d",&a[i],&b[i]);
mx=mymax(mx,mymax(a[i],b[i]));
}
ffind(,mx);
}
return ;
}

[LA3211]

2016-03-25 13:46:05

【UVALive - 3211】Now or later (二分+2-SAT)的更多相关文章

  1. UVALive - 3211 Now or later (二分+2SAT)

    题目链接 题意:有n架飞机,每架飞机有两个着陆时间点可以选,要求任意两架飞机的着陆时间之差不超过k,求k的最大值. 解法:由于每架飞机都有两个选择,并且必选且只能选其中一个,时间冲突也是发生在两架飞机 ...

  2. UVALive - 3211 (2-SAT + 二分)

    layout: post title: 训练指南 UVALive - 3211 (2-SAT + 二分) author: "luowentaoaa" catalog: true m ...

  3. UVa 3211 Now or later (二分+2-Sat)

    题意:有 n 架飞机,每个飞机早着陆,或者晚着陆,让你安排一个方式,让他们着陆的时间间隔尽量大. 析:首先对于时间间隔,可以用二分来解决,然后就成了一个判定性问题,然后怎么判断该时间间隔是不是成立呢, ...

  4. UVALive - 3211 - Now or later(图论——2-SAT)

    Problem   UVALive - 3211 - Now or later Time Limit: 9000 mSec Problem Description Input Output Sampl ...

  5. UVALive 3211 Now or later(2-SAT,二分,Kosaraju)

    题意: 有n个飞机要降落,每机都可以在两个时间点上选择降落.但是两机的降落时间间隔太小会影响安全性,所以,要求两机的降落时间应该达到最大,当然也不能冲突了.问最大的时间间隔是多少?(其实问的是max( ...

  6. 【二分答案+2-SAT】Now or later UVALive - 3211

    题目链接:https://cn.vjudge.net/contest/209473#problem/J 题目大意: 有n架飞机,每架飞机有两个可降落时间点a,b(a<b)(即一架飞机可以选择在时 ...

  7. UVALive 3211 Now or later

    每架飞机有早晚起降两种方式,给定n架飞机两种方式的起落时间,为每架飞机安排起落时间(早或晚),使得所有飞机起降时间按照早到晚的顺序之间的间隔时间最小值尽量大. 分析: 最小时间尽量大应该采用二分的方法 ...

  8. Gym 101194D / UVALive 7900 - Ice Cream Tower - [二分+贪心][2016 EC-Final Problem D]

    题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...

  9. 2-sat基础题 uvalive 3211

    蓝书325页的基础题 二分+2-sat //看看会不会爆int!数组会不会少了一维! //取物问题一定要小心先手胜利的条件 #include <bits/stdc++.h> using n ...

随机推荐

  1. HDU2084JAVA

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  2. springmvc使用aop心得

    第一步:创建aop拦截类: @Component @Aspect public class ControllerSelectorInterceptor { @Before("executio ...

  3. (转)css换行样式:word-wrap同word-break的区别

    以下是引用片段: word-wrap:break-word; overflow:hidden; 而不是 以下是引用片段: word-wrap:break-word; word-break:break- ...

  4. H TML5 之 (5) 一个在线画图板

    这里加入了点难度了,增加了对HTML很多时间的把握,对象的把握 index.html <!DOCTYPE HTML> <html> <head> <title ...

  5. Linq- ExcuteQuery用法

    DataContext.ExecuteQuery<TResult> 方法 (String, Object[]) 语法: public IEnumerable<TResult> ...

  6. rac中 kull session会话脚本

    方法:ALTER SYSTEM KILL SESSION '80, 6, @2';  --<= 80 sid,6 serial#,@2 inst_id kill session 脚本如下:sel ...

  7. GitHub中"watch" "star" "fork"三个按钮干什么用的?

    总结下一般使用:1.想拷贝别人项目到自己帐号下就fork一下.2.持续关注别人项目更新就star一下3.watch是设置接收邮件提醒的.具体提醒有Issues and their commentsPu ...

  8. C#中的面向对象编程

    所有的面向对象语言都具有3个基本特征,C#也是不例外的. 封装---把客观事物封装成类,并将类内部的实现隐藏,以保证数据的完整性: 继承---通过继承可以复用父类的对象: 多态---允许将子对象赋值给 ...

  9. Java设计模式(学习整理)---适配模式

    设计模式之Adapter(适配器) 1.定义: 将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份. 2.为何使用? 我们经常碰到要将两 ...

  10. Windows phone 之Xml操作

    最近在做天气预报应用,这个应用中需要用到Xml来存储关注的城市列表,保存一下代码,方便以后使用,也给博友们一个参考: 其中:添加关注城市的操作代码是: 其实就是, (1)先把数据从CareCityCo ...