题意简述
多组数据。有$n<=2e5$个人,每个人有$m_i,p_i$。如果有$m_i$个人投给了你,那么这个人也会投你。否则你珂以用$p_i$块钱贿赂它。求所有人都投你的最小花费。
思路框架
先贿赂$m$大的,$p$小的。
具体思路
首先,$m$值更大的显然需要更多的人投,才能免费。所以,大一些的$m$我们就先考虑直接贿赂(当然,如果人数够了就直接免费)。所以要把$m$从大到小排序。然后优先贿赂便宜的,这也是显然的。while循环判断人数是否够了。优先贿赂便宜的,就用个优先队列好了。
代码
1 |
|