【校内模拟】【18-11-05】列队 【bfs+建图】【差分约束(的思想)】

题解

其实第一眼看到觉得很像差分约束,因为那么多的限制条件摆在那里嘛……事实证明处理的手段也的确是相近的。

100pts(因为终于打了正解2333)

对于每一个给出的限制,我们从Li往Ri连一条权值为Di的边,再从Ri往Li连一条权值为-Di的边。然后我们只需一个bfs就能A掉这题。

emm?具体操作?

考虑一下,如果所有的限制同时成立,那么两个人之间的距离就该是固定的,也就是说其对应的dis数组最多被更新一次(初始化为inf),如果下一次搜到这个点的时候,距离不一样,那就说明限制之间互相冲突了,自然就impossible了。

如果所有的限制都被满足,那答案是什么呢?由于我们建的这个图不见得是联通的,而最后要求的答案又是满足条件的区间长度的最小值。所以我们就把每个联通块的长度取个mx,这就是正确答案了,因为每个位置可以站很多人嘛,你把短的区间全部塞到长的区间里面就可以了尽管画面很美

最后就是记得不要像我一样每次bfs都memset否则你就炸了QAQ

总结

咳咳……刚好考前还在看差分约束的模板题,结果T1就考了差不多的……能想出正解自然很高兴,当然因为一时手贱只有35分就很气了

反正离联赛也没几天了,就不学新知识了,把所有的模板都拿出来打打,免得遇到这种简单问题反而忘了怎么做~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值