优先队列。
我们可以先枚举一个维度,然后在一个维度上确定另外一个维度的大小。
这里我们是枚举收藏数的最小值 x,然后在收藏数大于等于 x 的所有题解中,选择点赞量前 k 大的 k 个题解,求出其点赞量之和。
可以发现的是,我们可以从大到小枚举 x ,然后将选择的 k 个题解以它们的点赞量维护一个小根堆,以及这些点赞量之和。
小红写了 n 篇题解,第 i 篇题解点赞数为 ai ,收藏数为 bi 。
现在小红要选择 k 篇题解作为优秀题解,题解的优秀程度定义为:k 篇题解的点赞数之和乘上选择的 k 篇题解的最小值。
问选择的 k 篇题解的优秀程度最大为多少。
第一行为两个正整数 n,k(1≤k≤n≤105) ,分别表示小红的题解数量 n,以及选择称为优秀题解的数量 k
第二行输入 n 个正整数 ai(1≤ai≤105) ,代表每篇题解的点赞数
第三行输入 n 个正整数 bi(1≤bi≤105) ,代表每篇题解的收藏数
输出一个正整数,代表选择的 k 篇题解的优秀程度最大值
4 2
1 2 3 4
3 4 2 1
10