Re: [闲聊] 每日LeetCode

楼主: dustsstar79 (穆)   2023-02-23 08:41:33
这一篇大概有50篇JPTT废文价值左右==
502. IPO
有资本w,有n个产品,选第i个产品做可以得到其利益profit[i](每个产品只能做一次),
有前提是选做第i个产品时本金w必须 >= capital[i],若做了则可使资本增加profit[i],
问最多做k个产品可以得到的最大资本
n <= 1e5, profit[i] <= 1e4, capital[i] <= 1e9, w <= 1e9, k <= 1e5.
答案在32bit整数以内
然后就想到把profit[i]对capital[i]排序一下,然后把 capital[i] <= w 对应的
profit[i]丢进大根堆...
C++ code:
class Solution {
public:
int findMaximizedCapital(int k, int w, vector<int>& p, vector<int>& c) {
int n = p.size();
vector<pair<int, int>> v;
for(int i=0; i<n; i++) v.push_back({c[i], p[i]});
sort(v.begin(), v.end());
priority_queue<int> q;
int cur = 0;
while(k){
while(cur < n && w >= v[cur].first){
q.push(v[cur].second);
cur++;
}
if(q.empty()) break;
w += q.top();
q.pop();
k
作者: Rushia (みけねこ的鼻屎)   2023-02-23 09:12:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com