2902. 和带限制的子多重集合的数目
思路:第一只老鼠必须吃k块奶酪,那么我们先假设第二只老鼠把所有奶酪都吃了。然后在此基础上,看看第一次老鼠吃哪k块,可以增加的分最多。此时增加的分数,就是两个数组之间的差值,选取差值最大的k个即可。
class Solution {
public:
int miceAndCheese(vector<int>& reward1, vector<int>& reward2, int k) {
int sum=0;
int n=reward1.size();
for(int i=0;i<n;i++){
sum+=reward2[i];
reward1[i]-=reward2[i];
}
sort(reward1.rbegin(),reward1.rend());
for(int i=0;i<k;i++){
sum+=reward1[i];
}
return sum;
}
};