poj 2431 Expedition (贪心)
解题思路
用堆贪心,每次能走就走,不能走从大根堆里取出以前加进去的油量并更新答案。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
const int MAXN = 10005;
inline int rd(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?0:1;ch=getchar();}
while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return f?x:-x;
}
int n,l,p,ans,oil;
struct Data{
int dis,w;
friend bool operator<(const Data A,const Data B){
return A.dis>B.dis;
}
}data[MAXN];
priority_queue<int> Q;
int main(){
n=rd();
for(int i=1;i<=n;i++)
data[i].dis=rd(),data[i].w=rd();
sort(data+1,data+1+n);data[n+1].dis=0;
l=rd();p=rd();int res=p;
for(int i=1;i<=n+1;i++){
data[i].dis=l-data[i].dis;
int DIS=data[i].dis-data[i-1].dis;
if(DIS<=res) {res-=DIS;Q.push(data[i].w);continue;}
while(Q.size()){
ans++;res+=Q.top();Q.pop();
if(res>=DIS) break;
}
if(!Q.size() && res<DIS) {puts("-1");return 0;}
res-=DIS;Q.push(data[i].w);
}
cout<<ans;
return 0;
}
分类:
算法--贪心
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· 程序员常用高效实用工具推荐,办公效率提升利器!
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 【译】WinForms:分析一下(我用 Visual Basic 写的)