标签:好的 开心 math 优先队列 增加 codeforce 学生 lin def
我爱对拍,对拍使我快乐。。。
题意:有\(n\)个议题,学生们会让议会同意\(p\)个,其中主席会执行\(k\)个,
每一个议题执行后主席会掉\(a_i\)的头发,不执行后议会会增加\(b_i\)的不开心值,
然后主席想让议会的不开心值最小,如果有多重方案就选自己头发掉的最少的;
而学生们想让主席的头发掉的最多,如果有多种方案让议会的不开心值最大。
问让议会同意哪\(p\)个会达到最好的效果。
思路1:
这是我的不对的思路。
(虽然没提交
我们首先将所有的数按照\(b_i\)从大到小排,如相等按照\(a_i\)从小到大排。
然后把前\(n-p+k\)个按照\(a_i\)从大到小排,
然后取前\(k\)个作为主席执行的
再向后延\(p-k\)个作为主席不执行的
然后其实这个是错的。
如果所有的\(a\)都相等,那么这个答案就不对
(我只是对拍出来的,并不会证。
思路2:
这是对的思路。
首先我们枚举主席执行的和不执行的所取的议题的范围的分界线\(i\)。
然后我们对于所有的\(i\)要找出主席取的和不取的最好效果的那些议题。
那就从前往后扫一遍,找出取的;
从后往前再扫一遍,找出不取的。然后取或不取都是放到优先队列里面找最大的\(a\)或\(b\)。
然后看答案最大的就可以了。
【Codeforces 332C】Students' Revenge
标签:好的 开心 math 优先队列 增加 codeforce 学生 lin def
原文地址:https://www.cnblogs.com/denverjin/p/10591132.html