题解 P1937 【[USACO10MAR]仓配置Barn Allocation】
相信大家都猜得到解法:
将奶牛的路径转化为线段,以右端点为第一关键字,左端点为第二关键字,按第一关键字从小到大排序,若第一关键字相同则按第二关键字从大到小排序。
然后按序枚举线段,看看是否可以放(区间最小值
这为什么是对的呢?
第一个结论证明比较显然,左端点从大到小取最优(假设右端点全都是
(因为从小到大取所占用的空间和一定
然后我们证明第二个结论,右端点从小到大取最优。
可以用归纳法。
第一条线段一定要加入。
假设已经到了第
如果没有冲突,直接算入答案。这样根据归纳假设是最优的。
但如果冲突了,设和第
如果
否则
------------- j
------------------ i
发现如果不选
但是发生冲突的区间是
显然如果剩下的区间左端点
所以这样对后续的影响可以看成
但如果不选
就毫无影响。
所以如果选择
所以我们不选,一定更优。
因此得证。