2-sat+二分。。。

每次二分答案然后连边2-sat。。。边要开到n*n

样例水得跟没有一样。。。

#include<bits/stdc++.h>
using namespace std;
const int N = ;
struct edge {
int nxt, to;
} e[N * N << ];
int n, cnt = , top, Time, cot;
int dfn[N], low[N], vis[N], st[N], early[N], late[N], head[N], belong[N];
void link(int u, int v)
{
e[++cnt].nxt = head[u];
head[u] = cnt;
e[cnt].to = v;
}
void tarjan(int u)
{
st[++top] = u; dfn[u] = low[u] = ++Time; vis[u] = ;
for(int i = head[u]; i; i = e[i].nxt)
{
if(!dfn[e[i].to])
{
tarjan(e[i].to);
low[u] = min(low[u], low[e[i].to]);
}
else if(vis[e[i].to]) low[u] = min(low[u], dfn[e[i].to]);
}
if(dfn[u] == low[u])
{
++cot; int x = ;
while(x != u)
{
x = st[top--];
belong[x] = cot;
vis[x] = ;
}
}
}
bool judge(int t)
{
memset(head, , sizeof(head));
memset(dfn, , sizeof(dfn));
memset(low, , sizeof(low));
memset(belong, , sizeof(belong));
cnt = ; top = Time = cot = ;
for(int i = ; i <= n; ++i)
for(int j = ; j <= n; ++j) if(i != j)
{
int x = i << , y = j << ;
if(late[i] - late[j] >= && late[i] - late[j] < t)
link(x, y - ), link(y, x - );
if(late[i] - early[j] >= && late[i] - early[j] < t)
link(x, y), link(y - , x - );
if(early[i] - late[j] >= && early[i] - late[j] < t)
link(x - , y - ), link(y, x);
if(early[i] - early[j] >= && early[i] - early[j] < t)
link(x - , y), link(y - , x);
}
for(int i = ; i <= * n; ++i) if(!dfn[i]) tarjan(i);
for(int i = ; i <= n; ++i) if(belong[i * ] == belong[i * - ]) return false;
return true;
}
int main()
{
while(scanf("%d", &n) != EOF)
{
int l = , r = , ans = ;
for(int i = ; i <= n; ++i) scanf("%d%d", &early[i], &late[i]), r = max(r, late[i]);
while(r - l > )
{
int mid = (l + r) >> ;
if(judge(mid)) ans = l = mid; else r = mid;
}
printf("%d\n", ans);
}
return ;
}

la3211的更多相关文章

  1. LA3211 Now or later

    题目大意:n架飞机,每架可选择两个着落时间.安排一个着陆时间表,使得着陆间隔的最小值最大.(转自http://blog.csdn.net/u013514182/article/details/4233 ...

  2. LA3211 飞机调度 Now or later-二分法&TwoSet

    https://vjudge.net/problem/UVALive-3211 As you must have experienced, instead of landing immediately ...

  3. 【LA3211 训练指南】飞机调度 【2-sat】

    题意 有n嫁飞机需要着陆.每架飞机都可以选择“早着陆”和“晚着陆”两种方式之一,且必须选择一种.第i架飞机的早着陆时间为Ei,晚着陆时间为Li,不得在其他时间着陆.你的任务是为这些飞机安排着陆方式,使 ...

  4. 【UVALive - 3211】Now or later (二分+2-SAT)

    题意: 有n架飞机需要着陆.每架飞机有两种选择,早着陆或者晚着陆,二选其一.现在为了保证飞机的着陆安全,要求两架着陆的飞机的时间间隔的最小值达到最大. 分析: 最小值最大问题我们想到二分答案.对于猜测 ...

随机推荐

  1. 查询条件中,不进sql语句 也不进后台bug

    前端代码:本来代码中少写了value="1",后来加上value值之后,可以正常进方法 <div class="row"> <label cl ...

  2. 后台中的sql注入

    aa.getSqlMap().put("order"," and a.id not in(\'"+po.getId()+"\')"); \' ...

  3. 我已经迷失在事件环(event-loop)中了【Nodejs篇】

    我第一次看到他事件环(event-loop)的时候,我是一脸懵,这是什么鬼,是什么循环吗,为什么event还要loop,不是都是一次性的吗? 浏览器中和nodejs环境中的事件环是有一些区别的,这里我 ...

  4. 类模板成员函数默认值问题:an out-of-line definition of a member of a class template cannot have default arguments

    template <typename T> class A { ); }; template<typename T> ) { /* */ } 对于类似上文代码,VS编译器会报 ...

  5. 洛谷——P1471 方差

    P1471 方差 题目描述 蒟蒻HansBug在一本数学书里面发现了一个神奇的数列,包含N个实数.他想算算这个数列的平均数和方差. 借一下远航之曲大佬的图片,特别清晰: 那么只要维护区间平方和,就可以 ...

  6. <MyBatis>入门四 传入的参数处理

    1.单个参数 传入单个参数时,mapper文件中 #{}里可以写任意值 /** * 传入单个参数 */ Employee getEmpById(Integer id); <!--单个参数 #{} ...

  7. Discuz论坛迁移需要修改的3个配置文件

    需要修改的3个地方: \config\config_global.php \config\config_ucenter.php \uc_server\data\config.inc.php

  8. RabbitMQ整合spring----https://www.cnblogs.com/woms/p/7040902.html

    https://www.cnblogs.com/woms/p/7040902.html

  9. [luoguP2280] [HNOI2003]激光炸弹(DP)

    传送门 二位前缀和DP大水题 ——代码 #include <cstdio> #include <iostream> ; int n, r, ans; int sum[MAXN] ...

  10. [USACO 4.2] 完美的牛栏

    ★★☆   输入文件:stall4.in   输出文件:stall4.out   简单对比 时间限制:1 s   内存限制:128 MB USACO/stall4(译by Felicia Crazy) ...