hdu4115Eliminate the Conflict

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

题意:两个人猜拳,B提前知道了A的出手情况,但是对B的出手有要求,(a,b,k)当k=0时要求B的第a次出手和第b次出手要一样,当k=1时要求B的第a次出手和第b次出手不一样。问B能否一局都不输。

分析:将B的每次出手分解成3种(石头,剪刀,布)情况,然后根据题目要求对其进行真假限制建立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=6e4+10;
const int M=2e6+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


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