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的程序真是死长死长的……