[BZOJ 2199] [USACO11JAN] 大陆议会The Continental Cowngress(2-SAT)

题面

题面较长,略

分析

考虑把问题转化成一个依赖性问题

我们把每只奶牛投出的两票中至少有一票和最终结果相符合转化:一只奶牛刚好投两次票,所以只要不满足奶牛的其中一次投票,就要满足另一次,这样就转化成了依赖性问题。

然后把每个议案拆成两个点,一个代表Y,一个代表N,每次把第一票不符合的点向符合的点连边,跑2-SAT

如果用传统的tarjan算法不好判断Y,N都可以的情况,观察数据范围\(n \leq 1000,m \leq 4000\),每次判断的的时候直接枚举第i个议案的结果是Y还是N,然后从对应的两个拆点开始BFS,看看有没有矛盾即可。如果两个点都没有矛盾,输出?.

时间复杂度\(O(n(n+m))\)

代码

//Tarjan+拓扑不好判断?的情况,暴力dfs
//xi为A或xj为B 转化为 xi为B且xj为A
#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
#define maxn 1000
using namespace std;
int n,m;
vector<int>E[maxn*2+5];
void add_edge(int u,int v){
// printf("%d %d\n",u,v);
E[u].push_back(v);
}
int mark[maxn*2+5];
void dfs(int x){
mark[x]=1;
for(int y : E[x]){
if(!mark[y]) dfs(y);
}
} bool check(int x){
for(int i=1;i<=n*2;i++) mark[i]=0;
dfs(x);
for(int i=1;i<=n;i++){
if(mark[i]&&mark[i+n]) return 0;
}
return 1;
} char ans[maxn+5];
int main(){
char op1[2],op2[2];
int u,v,p,q;
scanf("%d %d",&n,&m);
for(int i=1;i<=m;i++){
scanf("%d %s %d %s",&u,op1,&v,op2);
if(op1[0]=='Y') p=1;
else p=0;
if(op2[0]=='Y') q=1;
else q=0;
add_edge(u+n*p,v+n*(1-q));
/*
i为Y,i+n为N
举例理解,如果op1和op2为Y,N
那么第一个询问是N,不满足,对应的点就是u+1*n,第二个询问是N,满足,对应的点就是v+1*n
*/
add_edge(v+n*q,u+n*(1-p));
}
bool flag1,flag2;
for(int i=1;i<=n;i++){
flag1=check(i);
flag2=check(i+n);
if(!flag1&&!flag2){
printf("IMPOSSIBLE\n");
return 0;
}else if(flag1&&!flag2){
ans[i]='Y';
}else if(!flag1&&flag2){
ans[i]='N';
}else{
ans[i]='?';
}
}
for(int i=1;i<=n;i++) printf("%c",ans[i]);
}

[BZOJ 2199] [USACO11JAN] 大陆议会The Continental Cowngress(2-SAT)的更多相关文章

  1. P3007 [USACO11JAN]大陆议会The Continental Cowngress

    P3007 [USACO11JAN]大陆议会The Continental Cowngress 题意: 给出 n 个法案, m 头牛的意见, 每头牛有两个表决 格式为 "支持或反对某法案&q ...

  2. Luogu P3007 [USACO11JAN]大陆议会The Continental Cowngress

    P3007 [USACO11JAN]大陆议会The Continental Cowngress 题意 题意翻译 简述:给出\(n\)个法案,\(m\)头牛的意见,每头牛有两个表决格式为"支持 ...

  3. P3007 [USACO11JAN]大陆议会The Continental Cowngress(2-SAT)

    简述:给出 n 个法案, m 头牛的意见, 每头牛有两个表决 格式为 “支持或反对某法案”, 每头牛需要至少满足一个表决, 不可能成立的话输出 IMPOSSIBLE, 否则输出方案, Y代表能, N代 ...

  4. [USACO11JAN]大陆议会The Continental Cowngress_2-sat

    [USACO11JAN]大陆议会The Continental Cowngress_2-sat 题意: 由于对Farmer John的领导感到极其不悦,奶牛们退出了农场,组建了奶牛议会. 议会以“每头 ...

  5. bzoj 1823: [JSOI2010]满汉全席 && bzoj 2199 : [Usaco2011 Jan]奶牛议会 2-sat

    noip之前学的内容了,看到题竟然忘了怎么建图了,复习一下. 2-sat 大概是对于每个元素,它有0和1两种选择,必须选一个但不能同时选.这之间又有一些二元关系,比如x&y=1等等... 先把 ...

  6. BZOJ 2199: [Usaco2011 Jan]奶牛议会

    2199: [Usaco2011 Jan]奶牛议会 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 375  Solved: 241[Submit][S ...

  7. BZOJ 2199: [Usaco2011 Jan]奶牛议会 [2-SAT 判断解]

    http://www.lydsy.com/JudgeOnline/problem.php?id=2199 题意:裸的2-SAT,但是问每个变量在所有解中是只能为真还是只能为假还是既可以为真又可以为假 ...

  8. [BZOJ 2199] 奶牛议会

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2199 [算法] 2-SAT [代码] #include<bits/stdc++ ...

  9. BZOJ.2199.[USACO2011 Jan]奶牛议会(2-SAT)

    题目链接 建边不说了.对于议案'?'的输出用拓扑不好判断,直接对每个议案的结果DFS,看是否会出现矛盾 Tarjan也用不到 //964kb 76ms #include <cstdio> ...

随机推荐

  1. Halcon WPF C#采集图像区域灰度值

    源码下载地址:https://github.com/lizhiqiang0204/ImageGray.git Halcon代码如下: *读取图片,转换成灰度图片 read_image (Image1, ...

  2. springcloud 配置actuator

    pom.xml <!--Spring Boot Actuator,感应服务端变化--> <dependency> <groupId>org.springframew ...

  3. Laya layout算法

    /** * <p>重置对象的 <code>X</code> 轴(水平方向)布局.</p> * @private */ public function r ...

  4. php命令行工具

    https://jingyan.baidu.com/article/37bce2beb6e5681002f3a20f.html

  5. Swift hash & hashValue区别

    最后更新: 2017-07-22 在Swift标准库中,NSObjectProtocol协议 public var hash: Int { get } Equatable协议: extension N ...

  6. consul安装

    原文地址: https://www.cnblogs.com/cuishuai/p/8194345.html #比较详细/有集群方式 https://www.cnblogs.com/youcong/p/ ...

  7. Oracle诊断:在程序的运行中,有时候数据库会断开连接

    在程序的运行中,有时候数据库会断开连接,然后报下面错误: ORA-12519: TNS:no appropriate service handler found  可用的服务处理程序没有找到. 1. ...

  8. qcom Android Camera【转】

    本文转载自:http://blog.csdn.net/Wilsonboliu/article/details/54949196 1.总体架构 Android Camera 框架从整体上看是一个 cli ...

  9. 嵌入式Linux之虚拟内存地址空间布局(Virtual Memory Space)

    虚拟内存地址空间 Linux内核属于微内核的范畴,内核控制计算机的硬件资源,运行在特权模式:用户态应用程序运行在普通用户模式,无法直接访问硬件资源,必须依托于内核提供的资源,如CPU资源.Memory ...

  10. mysql的my.cnf参数详解

    转载[Mysql] MySQL配置文件my.cnf的理解 一.缘由 最近要接手数据库的维护工作,公司首选MySQL.对于MySQL的理解,我认为很多性能优化工作.主从主主复制都是在调整参数,来适应不同 ...