首页 > 其他分享 >PAT_A1070 Mooncake

PAT_A1070 Mooncake

时间:2023-10-16 09:25:29浏览次数:41  
标签:PAT mooncakes int ca line tons Mooncake A1070 thousand

Mooncake is a Chinese bakery product traditionally eaten during the Mid-Autumn Festival. Many types of fillings and crusts can be found in traditional mooncakes according to the region's culture. Now given the inventory amounts and the prices of all kinds of the mooncakes, together with the maximum total demand of the market, you are supposed to tell the maximum profit that can be made.

Note: partial inventory storage can be taken. The sample shows the following situation: given three kinds of mooncakes with inventory amounts being 180, 150, and 100 thousand tons, and the prices being 7.5, 7.2, and 4.5 billion yuans. If the market demand can be at most 200 thousand tons, the best we can do is to sell 150 thousand tons of the second kind of mooncake, and 50 thousand tons of the third kind. Hence the total profit is 7.2 + 4.5/2 = 9.45 (billion yuans).

Input Specification:

Each input file contains one test case. For each case, the first line contains 2 positive integers N (≤1000), the number of different kinds of mooncakes, and D (≤500 thousand tons), the maximum total demand of the market. Then the second line gives the positive inventory amounts (in thousand tons), and the third line gives the positive prices (in billion yuans) of N kinds of mooncakes. All the numbers in a line are separated by a space.

Output Specification:

For each test case, print the maximum profit (in billion yuans) in one line, accurate up to 2 decimal places.

Sample Input:

3 200
180 150 100
7.5 7.2 4.5

Sample Output:

9.45
#include<bits/stdc++.h>
using namespace std;
int n,d;
struct node{
	double in, p, per;
}ca[1000+5];
bool mycmp(node a, node b){
	return a.per > b.per;
}
int main(){
	scanf("%d%d", &n, &d);
	for(int i = 0; i < n; i++)
		scanf("%lf", &ca[i].in);
	for(int i = 0; i < n; i++){
		scanf("%lf", &ca[i].p);
		ca[i].per = ca[i].p / ca[i].in;
	}
	sort(ca, ca+n, mycmp);
	double r = 0;
	for(int i = 0; i < n; i++)
		if(d >= ca[i].in){
			d-=ca[i].in;
			r+=ca[i].p;
		}else{
			r+=ca[i].p*(d/(double)ca[i].in);
			break;
		}
	printf("%.2f", r);
	return 0;
}

总结

贪心

简单题。
月饼库存量可以是浮点数,虽然案例中都是整数但题目没有说明,设为正数测试点2会报错。

标签:PAT,mooncakes,int,ca,line,tons,Mooncake,A1070,thousand
From: https://www.cnblogs.com/Afinis/p/17766628.html

相关文章

  • ABC324F Beautiful Path
    给出一张DAG,每条边有两种边权\(b\)与\(c\),求一条从\(1\)到\(n\)的路径,问路径经过的边的\(\dfrac{\sumb}{\sumc}\)的最大值是多少。\(n,m\le2\times10^5\)。这不是经典01分数规划吗?将题目中的要求写成如下形式:\[\begin{aligned}&\text{Maximize}\dfrac......
  • Atcoder Beginner Contest 324 F Beautiful Path 题解-分数规划
    为了更好的阅读体验,请点击这里分数规划小技巧:尽可能将式子写成存在某种取值,使得不等式成立的形式。不然可能需要绕几个弯才能想出来。题目链接题目大意:给出一个DAG,每条边有一个\(b_i,c_i\),保证从编号小的边向编号大的边连边,且\(1\)到\(n\)必有路径,求\(1\)到\(n\)......
  • DropPath
    DropPath类似于Dropout,不同的是Drop将深度学习模型中的多分支结构随机“失效”而Dropout是对神经元随机“失效”DropPath在网络中的应用假设在前向传播中有如下的代码:x=x+self.drop_path(self.conv(x))那么在drop_path分支中,每个batch有drop_prob的概率样本在......
  • PAT_B1033 旧键盘打字
    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?输入格式:输入在2行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过 105 个字符的串......
  • 【愚公系列】2023年10月 二十三种设计模式(十二)-代理模式(Proxy Pattern)
    ......
  • typescript: Visitor Pattern
     /****VisitorPattern访问者是一种行为设计模式,允许你在不修改已有代码的情况下向已有类层次结构中增加新的行为。*file:Visitorts.ts*TheComponentinterfacedeclaresan`accept`methodthatshouldtakethebase*visitorinterfaceasanargument.......
  • typescript: Strategy Pattern
     /***StrategyPattern策略是一种行为设计模式,它将一组行为转换为对象,并使其在原始上下文对象内部能够相互替换。**file:Strategyts.ts*TheContextdefinestheinterfaceofinteresttoclients.*/classGeovinContext{/***@type{GeovinSt......
  • Patch 12419353 - 11.2.0.2.3 GI Patch Set Update (Includes Database PSU 11.2.0.2.
    Released:July19,2011,LastUpdated:August9,2011Thisdocumentisaccurateatthetimeofrelease.ForanychangesandadditionalinformationregardingGIPSU11.2.0.2.3,seetheserelateddocumentsthatareavailableatMyOracleSupport(http://supp......
  • 【愚公系列】2023年10月 二十三种设计模式(十一)-享元模式(Flyweight Pattern)
    ......
  • typescript: Observer Pattern
     /***ObserverPattern观察者是一种行为设计模式,允许一个对象将其状态的改变通知其他对象*file:Observerts.ts*TheSubjectinterfacedeclaresasetofmethodsformanagingsubscribers.*/interfaceGeovinSubject{//Attachanobservertothesub......