PAT贪心题---1020 月饼 (25分)

1020 月饼 (25分)

  • 把单价先计算一下,然后按照单价高依次出售
#include<iostream>
#include<vector>
#include<cctype>
#include<map>
#include<set>
#include<sstream>
#include<string>
#include<cstdio>
#include<algorithm>

using namespace std;

struct Node{
	double cnt,pride;
}node[1005];

bool cmp(Node a,Node b){
	return a.pride>b.pride;
}
int main() {
	int n,d; cin>>n>>d;
	for(int i=0;i<n;i++){
		cin>>node[i].cnt;
	}
	for(int i=0;i<n;i++){
		double x;cin>>x;
		node[i].pride=x/node[i].cnt;
	}
	sort(node,node+n,cmp);
	double ans=0;
	for(int i=0;i<n;i++){
			if(d>=node[i].cnt){
				d-=node[i].cnt;
				ans+=node[i].cnt*node[i].pride;
				node[i].cnt=0;
			}else{
				ans+=d*node[i].pride;
				break;
			}
	}
	printf("%.2f",ans);
	return 0;
}


原文地址:https://www.cnblogs.com/bingers/p/13097648.html