502. IPO
502. IPO
题目链接:502. IPO
代码如下:
//堆的使用
class Solution {
public:int findMaximizedCapital(int k, int w, vector<int>& profits, vector<int>& capital) {vector<pair<int,int>> mp;//优先队列默认的是大根堆,如果用小根堆则加入greater<int>priority_queue<int,vector<int>> que;//大根堆for(int i=0;i<profits.size();i++){mp.push_back({capital[i],profits[i]});}//按pair的第一个元素从小到大排序sort(mp.begin(),mp.end(),[&](const pair<int,int>& a,const pair<int,int>& b)->bool{return a.first<b.first; });int i=0;while(k-->0)//循环k次{while(i<profits.size()&&mp[i].first<=w)//把资本能覆盖的利润加进去que.push(mp[i++].second);if(que.empty())//大根堆的特性会把最大的利润放到最上面break;w+=que.top();que.pop();}return w;}
};