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);
			}
	}
}
posted @ 2026-03-14 16:09  peter_shen  阅读(4)  评论(0)    收藏  举报