洛谷P3602 Koishi Loves Segments 贪心

正解:贪心

解题报告:

传送门!

首先在学习贪心的入门题的时候我们就知道,当x=1的时候,也就是每条线段不能相交的时候的做法——就按右端点排序然后能选就选,也就是会议安排问题,原因显然?就你选右端点更靠左的线段显然不会更劣

然后现在考虑x!=1了怎么做

于是考虑类似的套路,依然是右端点排序能选就选,考虑什么时候不能选了?就加入现在新加入了一条线段,然后导致有个点被覆盖次数超过x了,那肯定就是要从覆盖了这个点的边中删去一条?然后就考虑删哪条?那就显然是把右端点最靠右的给删了,证明的话,因为我们是从左到右一个个扫描点的,所以显然每次删最靠右的收益最大

具体实现的话,两个点?

一个是因为要一个个点地扫所以要离散化,显然只有端点和p有意义,就成功把复杂度降下来了QwQ

一个是,我们不是要支持删边操作balabla的嘛,就感觉比较难实现?所以考虑开个c数组记录这个点删了几条线段,再开个全局变量t记录整个儿经过了几条线段,然后差分一下,这样每次删边就只会修改c[右端点]和t

(其实也可以,直接开个set,就直接支持一下删除最大值最小值操作就欧克了QwQ其实方便很多QAQ

over

关于细节二我好像说得不太清,,,我语文吃枣药丸TT所以具体看代码算了QAQ?

猜你喜欢

转载自www.cnblogs.com/lqsukida/p/10574118.html
今日推荐