http://acm.pku.edu.cn/JudgeOnline/problem?id=3683

2-SAT的题目,专门找的2-SAT来练的,早就想练一个需要输出结果的2-SAT了,一直没空,当时想的是干脆写好再睡觉……结果是我的午觉报废了……

题目其实不是很难的,赤裸裸的2-SAT,写好之后,提交,WA……

检查了一下程序,发现了一个错误,循环的初始错了,修改,还是WA

找了几个测试数据,全部是对的……

接下来又找到一个地方染色顺序搞错了,修改,还是WA

然后又发现2-SAT标程里面比我多了一个colordfs,加上去,继续WA……

后来发现我的判断时间相交的程序跟网上找的程序不太一样,干脆试了一下,居然就过了……

然后还原,发现及时没有colorDfs这个过程还是能够AC的,不过其他地方就是实实在在的错误了……

这个地方倒还好……

话说关于相交,当时为了保险起见特地写得比较长,显得不容易错……

int ret = false;
if(tt[i][0] > tt[j][0] && tt[i][0] < tt[j][1])
ret = true;
if(tt[i][1] > tt[j][0] && tt[i][1] < tt[j][1])
ret = true;
if(tt[j][0] > tt[i][0] && tt[j][0] < tt[i][1])
ret = true;
if(tt[j][1] > tt[i][0] && tt[j][1] < tt[i][1])
ret = true;

return ret

这是我的……

return (tt[i][0] < tt[j][1] && tt[j][0] < tt[i][1]);

下面的是找来的……

一直想不通为什么不对

写了个rand()的程序专门测试,也没发现错误(后来发现rand()的程序居然写错了……)

各种悲剧的……

最后发现当两段东西相等的时候我的程序要出错……

搞了1个多小时才发现这么个东西……

脑子果真犯2了……

悲情的……

没有午觉的关系吧……脑子抗议了XD

不过一直还是有疑惑ColorDfs到底要不要加上去嘞……

话说2-SAT的程序真是死长死长的……