3.3(差分约束+2-SAT总结)

         终于把题基本补完了,头大,,,

        发现几个以前理解的不对的地方,比如2-SAT tarjan解法反向拓扑求可行解的过程,再有之前 关于2-SAT中如果p->q和非q->非p一定同时存在的时候可以用扩展域并查集代替tarjan在线判断合法性的理解现在看来是不全面的。   (写到后面发现并查集有个地方写错了,改后就A了,有点戏剧,不过目前来看之前的思考还是很有道理的,有没有用再说吧)。

       直接举例子吧  

题意:(POJ 3702)

      一个圆上n个点,m条线段,一条线段连接两个点,线段不能跨越圆的边界(只能在圆的内侧或者外侧),问这m条线段能不能同时存在。

分析:

      直接往差分约束上想的话这题就很水了,注意一下的就是如果两条线段在同一侧相交的话,不论线段跨越优弧还是劣弧都是会相交的,分类讨论一下即可。

      这里用扩展域并查集解为什么不合适呢。  可以A呢?

思路:

     还是o(n*n)枚举边,总共C(m,2)种情况,如果这两条边相交,外合并内,内合并外,如果不相交就不用管了。然后每次出现两边相交的情况,先判断其是不是一定在同一侧,如果在同一侧,直接break,否则,继续。

     开始没想明白的是  这样能是(最终如果认为有解)的充要条件么。答案是肯定的。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值