leetcode_贪心_poj_2431_最优加油方法

//核心知识点:优先队列可以满足贪心算法里边记录每次做的值 即 “如果做就做最大的那个的值”
bool cmp(const std::pare<int,int> &a,const std::pare<int,int> &b){
return a.first > b.first;
}
class Solution {
public:
int get_mini_stop(int p,int l,std::vector<std::pare<int,int>>& stop){
int result =0;
//cmp:指定从小到大排 还是从大到小排
std::sort(stop.begin(),stop.end(),cmp);
stop.push_back(std::make_pare(0,0));
std::priority_queue q;
for(int i = 0;i <stop.size();i++){
int dis = l - stop[i].first;
while(!q.empty() && dis > p){
p += q.top();
q.pop();
result ++;
}
if(q.empty() && p < dis){
return -1;
}
p -= dis;
l = stop[i].first;
//更新二叉堆 其最大值是top
q.push(stop[i].second)

    }
    return result;
}

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

专一的黄先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值