hdu1816Get Luffy Out *

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1816

题意:有2*n种钥匙,n对钥匙的约束(用了一把另一把那种钥匙就不能用了),m扇门。每扇门上有两把锁,打开一把就能打开门。问最多能打开多少扇门。

分析:求最大值我们可以二分,然后根据约束条件用2-SAT算法就行了。

代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
typedef double db;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
const db eps=1e-5;
const int N=4e3+50;
const int M=7e3+10;
const ll MOD=1000000007;
const int mod=1000000007;
const int MAX=1000000010;
const double pi=acos(-1.0);
struct twosat {
    int n,k,d[N];
    bool mark[N];
    int tot,u[N],v[M],pre[M];
    void init(int a) {
        n=a<<1;tot=0;
        for (int i=0;i>1;
        while (l+1>1;
        else r=mid,mid=(l+r)>>1;
        printf("%d\n", l);
    }
    return 0;
}


你可能感兴趣的:(online,judge,Hdu,图论,2-SAT,其他,二分)