online|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



    推荐阅读