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

题解

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

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

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

emm?具体操作?

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

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

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

总结

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

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

你可能感兴趣的:(校内模拟)