1014: 奇怪的餐厅
很简单的贪心呢,就是double赋值给int,是截断小数部分
#include <bits/stdc++.h>
using namespace std;
int n;
double t;
struct node{
double z;
double up;
bool operator<(const node& a)const{
return z>a.z; //按照折扣小为依据弄小根堆
}
};
int main(){
while(scanf("%d%lf",&n,&t)!=EOF){
priority_queue<node> que;
for(int i=1;i<=n;i++){
double z,up;
scanf("%lf%lf",&z,&up);
que.push({z,up});
}
double sum=0;
while(t>0&&!que.empty()){
auto now=que.top();
que.pop();
if(t>now.up){
//cout<<"第一种选项"<<now.z<<" "<<now.up<<endl;
sum+=now.z*now.up;
t-=now.up;
}
else{
//cout<<"第二种选项"<<now.z<<" "<<now.up<<endl;
sum+=t*now.z;
t=0;
}
}
if(t==0){
int a=sum;
//cout<<a<<endl;
printf("%d\n",a);
}
else
{int a=sum+t;
//cout<<a<<endl;
printf("%d\n",a);
}
}
}

浙公网安备 33010602011771号