贪心,每次都尽可能的拿性价比最好的。
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
struct node{
double w,p,t;
}d[150];
bool cmp(const node &a,const node &b)
{
return a.t>b.t;
}
int main(){
int n,t;
cin>>n>>t;
for(int i=0;i<n;i++){
cin>>d[i].w>>d[i].p;
d[i].t=d[i].p/d[i].w;
}
sort(d,d+n,cmp);
double ans=0,now=0;
for(int i=0;i<n;i++){
if(now+d[i].w<=t){
ans+=d[i].p;
now+=d[i].w;
}
else {
ans+=(t-now)*d[i].t;
break;
}
}
printf("%.2f\n",ans);
return 0;
}
本文详细解析洛谷P2240题目,采用贪心算法策略,通过计算性价比最高的物品,实现资源的最大化利用。代码中使用了C++实现,包括输入输出、结构体定义、比较函数及主函数流程。

1605

被折叠的 条评论
为什么被折叠?



