题目链接

题意:有n架飞机,每架飞机有两个着陆时间点可以选,要求任意两架飞机的着陆时间之差不超过k,求k的最大值。

解法:由于每架飞机都有两个选择,并且必选且只能选其中一个,时间冲突也是发生在两架飞机之间的,因此二分答案,对冲突的时间建边处理,然后跑2SAT即可。

 #include<cstdio>
#include<cstring>
#include<algorithm> using namespace std;
const int N=+;
struct E {
int v,nxt;
} e[N*N];
int n,hd[N],ne;
void init() {memset(hd,-,sizeof hd); ne=;}
void addedge(int u,int v) {e[ne]= {v,hd[u]},hd[u]=ne++;} int dfn[N],low[N],scc[N],sta[N],nscc,nsta,tot;
void dfs(int u) {
dfn[u]=low[u]=++tot;
sta[nsta++]=u;
for(int i=hd[u]; ~i; i=e[i].nxt) {
int v=e[i].v;
if(!dfn[v])dfs(v),low[u]=min(low[u],low[v]);
else if(!scc[v])low[u]=min(low[u],dfn[v]);
}
if(low[u]==dfn[u]) {
nscc++;
for(; !scc[u]; scc[sta[--nsta]]=nscc);
}
}
void getscc() {
memset(dfn,,sizeof dfn);
memset(scc,,sizeof scc);
tot=nscc=nsta=;
for(int i=; i<n*; ++i)if(!dfn[i])dfs(i);
} int x[N],y[N];
int p1(int x) {return x<<;}
int p2(int x) {return x<<|;} bool ok(int k) {
init();
for(int i=; i<n; ++i)
for(int j=i+; j<n; ++j) {
if(abs(x[i]-x[j])<k)addedge(p1(i),p2(j)),addedge(p1(j),p2(i));
if(abs(x[i]-y[j])<k)addedge(p1(i),p1(j)),addedge(p2(j),p2(i));
if(abs(y[i]-x[j])<k)addedge(p2(i),p2(j)),addedge(p1(j),p1(i));
if(abs(y[i]-y[j])<k)addedge(p2(i),p1(j)),addedge(p2(j),p1(i));
}
getscc();
for(int i=; i<n; ++i)if(scc[p1(i)]==scc[p2(i)])return false;
return true;
} int bi(int l,int r) {for(int mid; l<r; mid=(l+r+)>>,ok(mid)?l=mid:r=mid-); return l;} int main() {
while(scanf("%d",&n)==) {
for(int i=; i<n; ++i)scanf("%d%d",&x[i],&y[i]);
printf("%d\n",bi(,(int)1e7));
}
return ;
}

最新文章

  1. ABP框架Web API跨域问题的解决方案
  2. Java之enumeration(枚举)
  3. 使用 Aspose.Slide 获取PPT中的所有幻灯片的标题
  4. Mac OS X上尝试编译CoreCLR源代码
  5. Unable to write inside TEMP environment path
  6. Mysql笔记之 -- 开启Mysql慢查询
  7. .htaccess文件设置
  8. .net简单的静态页生成
  9. 201521123073 《Java程序设计》第1周学习总结
  10. 下载jQuery EasyUI出现网络问题
  11. Ubuntu 14 安装WPS
  12. 【Python 15】分形树绘制3.0(递归函数)
  13. Clion设置字体大小和护眼色
  14. (转)如何在maven的pom.xml中添加本地jar包
  15. 消息中间件:rabbitmq安装
  16. 行业观察报告:从SAAS困局看行业趋势 ZT
  17. Book Lending Registration
  18. Linux下tomcat修改成的80端口无法访问
  19. jvm内存增长问题排查简例
  20. 通过 Spring Security配置 解决X-Frame-Options deny 造成的页面空白 iframe调用问题

热门文章

  1. 一步步讲解如何开源自己的项目到GitHub上,Mac机示例
  2. Python编程-面向对象和类
  3. 防止iframe被别的网站引用
  4. Centos 一次卸载多个RPM包
  5. python基础语法学习常见小问题
  6. java 监控命令
  7. java——base64 加密和解密
  8. Codeforces Round #366 (Div. 2) A , B , C 模拟 , 思路 ,queue
  9. numpy加权平均
  10. Android国际化-图片国际化和文本字符国际化