首先我是的确确定了LRJ那个代码也是判断一个点的两种状态是否在一个连通分量内。

   关于自己做的,自己又确定了一些,让自己那样先,比如说对于 3 6 1 AND这样3 6都已经确定的点,自己用Num记录的话结果死的很惨。

   我也确定下,现场比赛自己创算法(指的是代码比较新)的话也许会死的很惨。。。

  

   2-SAT,后来我忽然想到就是确定的位置也可以用这种对称方法做出来,就加一个每种状态都可以推出这种状态呗。。

   顺便知道了RANK上排名超前的一般都加入了输入输出加速了

   还顺便知道了OJ上的数据也许是随机出的

   还顺便学习了下tarjan的2-SAT做法,其实思想本来就是类似的。

 

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std; //我的错误就是无法判断已经确定结果的边然后。。。。
const int maxn = 1500;
int n,m;
vector<int> G[maxn*3];
bool mark[maxn*3];
int s[maxn*3],c;
char op[10]; bool dfs(int x)
{
if(mark[x^1]) return false;//这个一定是强连通分量果然
if(mark[x]) return true;
mark[x]=true;
s[c++]=x;
for(int i=0;i<G[x].size();i++)
if(!dfs(G[x][i])) return false;
return true;
} void init()
{
for(int i=0;i<n*2;i++) G[i].clear();
memset(mark,0,sizeof(mark));
} bool solve()
{
for(int i = 0;i < n*2; i += 2)
{
if( !mark[i] && !mark[i+1] )
{
c = 0;
if( !dfs(i) )
{
while(c>0)
mark[s[--c]]=false;
if(!dfs(i+1)) return false;
}
}
}
return true;
} int main()
{
int a,b,c;
while(scanf("%d%d",&n,&m)!=EOF)
{
init();
for(int i=0;i<m;i++)
{
scanf("%d%d%d%s",&a,&b,&c,op);
if(!strcmp(op,"AND"))
{
if(c==1)
{
G[a*2].push_back(b*2);//如果出现这种情况那么一定是真。就这样。
G[a*2+1].push_back(b*2); G[b*2].push_back(a*2);
G[b*2+1].push_back(a*2);
}
else if(c==0)
{
G[a*2].push_back(b*2+1);//真只能放假
G[b*2].push_back(a*2+1);
}
}
//////////
else if(!strcmp(op,"OR"))
{
if(c==1)
{
G[a*2+1].push_back(b*2);//a假b必须为真
G[b*2+1].push_back(a*2);
}
else if(c==0)
{
G[a*2].push_back(b*2+1);
G[a*2+1].push_back(b*2+1);//必须都为0 G[b*2].push_back(a*2+1);
G[b*2+1].push_back(a*2+1);
}
}
////////////
else if(!strcmp("XOR",op))
{
if(c==1)
{
G[a*2+1].push_back(b*2);
G[a*2].push_back(b*2+1); G[b*2+1].push_back(a*2);
G[b*2].push_back(a*2+1);
}
else if(c==0)
{
G[a*2+1].push_back(b*2+1);
G[a*2].push_back(b*2); G[b*2+1].push_back(a*2+1);
G[b*2].push_back(a*2);
}
}
} if(solve()==false) printf("NO\n");
else
{
printf("YES\n");
}
}
return 0;
}

POJ3678【错误总会让自己有收获的】的更多相关文章

  1. 【转】Javascript错误处理——try…catch

    无论我们编程多么精通,脚本错误怎是难免.可能是我们的错误造成,或异常输入,错误的服务器端响应以及无数个其他原因. 通常,当发送错误时脚本会立刻停止,打印至控制台. 但try...catch语法结构可以 ...

  2. 关于react16.4——错误边界

    过去,组件内的 JavaScript 错误常常会破坏 React 内部状态,并导致它在下一次渲染时产生神秘的错误.这些错误总会在应用代码中较早的错误引发的,但 React 并没有提供一种方式能够在组件 ...

  3. 廖雪峰Java3异常处理-1错误处理-1Java的异常

    1.计算机运行中的错误 在计算机程序运行的过程中,错误总会出现,不可避免的 用户输入错误 读写文件错误 网络错误.内存耗尽.无法连接打印机不可 String s = "abc"; ...

  4. 我是一只IT小小鸟读后感

    当老师推荐我读这本书的时候,并不想看,因为我不喜欢机械的东西,然而阅读几章后,对这本书有了其他看法.不知不觉竟把它看完!看完这本<我是一只IT小小鸟>,我感触很深. 在书中我明白了很多,大 ...

  5. jQuery的ajax学习

    jQuery是一个非常常见的JavaScript库,可是,突然发现其实自己大多数时候,潜意识里面对它其实是视而不见的,比如它的ajax,不是没用过,每次使用,要不,是直接套用已有的格式,要不直接从官网 ...

  6. 20155303 2016-2017-2 《Java程序设计》第四周学习总结

    20155303 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 6.1 何谓继承 继承避免多个类间重复定义共同行为,使用关键字exten ...

  7. FOC 算法基础之欧拉公式

    文章目录 欧拉公式 几何意义 复数平面 动态过程 加法 FOC电压矢量的推导 总结 参考 FOC中电压矢量合成的推导,对于欧拉公式的几何意义做了一个全面的回顾. 欧拉公式 欧拉是一个天才,欧拉公式甚至 ...

  8. eclipse再见,android studio 新手入门教程(二)项目的导入

    上一篇博客介绍了AS的一些常用设置方法,当工具调教妥当后,自然就要开始项目的开发啦.从零开始新建一个项目,这个简单,不必多说,这篇博客会分享我从旧平台eclipse导入项目到AS的过程,以及遇到的一些 ...

  9. SQL Server时间粒度系列

        工作中经常遇到针对业务部门提出不同时间粒度(年.季度.月.周.日等等日期时间粒度,以下简称时间粒度)的数据统计汇总任务,也看到不少博友针对这方便的博文,结合SQL Server的日期时间函数和 ...

随机推荐

  1. MVC-03 控制器(4)

    七.模型绑定 在ASP.NET MVC中是通过模型绑定(Model Binding)达到解析客户端传来的数据. 1.简单模型绑定 当网页上有个窗体,且窗体内有个名为Username的输入字段,而Act ...

  2. Ubuntu服务器上SSH Server 的安装和设置

    网上有很多介绍在Ubuntu下开启SSH服务的文章,但大多数介绍的方法测试后都不太理想,均不能实现远程登录到Ubuntu上,最后分析原因是都没有真正开启ssh-server服务.最终成功的方法如下: ...

  3. HTTP 301 跳转和302跳转的区别

    常用的重定向方式有: 301 redirect, 302 redirect 与 meta fresh: 301 redirect::301代表永久性转移(Permanently Moved),301重 ...

  4. (step7.2.3)hdu 2554(N对数的排列问题——简单数论)

    题目大意:输入一个整数n,表示有n对整数.判断能否出现一种情况就是2个1之间有1个数,2个2之间有2个数..... 解题思路: 准备知识: ①n对数,共2*n个数.所以要有2*n个位置来放置这2*n个 ...

  5. Android 涂鸦最佳实践

    Android中实现手势画图一般都两种方式,一是直接在View上绘制,而是使用SurfaceView. 两者还是有一些差别的.简介下. View:显示视图,内置画布,提供图形绘制函数.触屏事件.按键事 ...

  6. VMware Workstation下VMnet1等虚拟网卡与主机网卡之间的关系

    VMware Workstation下VMnet1等虚拟网卡与主机网卡之间的关系 本文出自 "王春海的博客" http://wangchunhai.blog.51cto.com/2 ...

  7. LVS集群的体系结构

    2.LVS主要组成部分为: 负载调度器(load balancer/ Director),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称 ...

  8. 13 - NSURLConnection

    一.互联网 基本概念: HTTP协议 统一标准获取网络资源(其他设备上的东西) 本机 -> 远程服务器(计算机) URL(http有格式的字符串) 本机 <- 远程服务器(计算机) Fil ...

  9. Python与开源GIS:在OGR中使用SQL语句进行查询

    摘要: 属性选择与空间选择都可以看作是OGR内置的选择功能,这两种功能可以解决大部分实际中的问题.但是也有这种时候,就是进行查询时的条件比较复杂.针对这种情况,OGR也提供了更加灵活的解决方案:支持使 ...

  10. Swift - iOS中各种视图控制器(View Controller)的介绍

    在iOS中,不同的视图控制器负责不同的功能,采用不同的风格向用户呈现信息.下面对各个视图控制器做个总结: 1,标准视图控制器 - View Controller 这个控制器只是用来呈现内容.通常会用来 ...