Problema del pastel de luna de la PTA

Problema del pastel de luna de la PTA

El pastel de luna es un alimento tradicional que comen los chinos durante el Festival del Medio Otoño. Hay muchos pasteles de luna con diferentes sabores en diferentes regiones. Dado el inventario de todos los tipos de pasteles de luna, el precio de venta total y la demanda máxima en el mercado, calcule el beneficio máximo que se puede obtener.

Nota: Se permite retirar parte del inventario durante las ventas. La situación dada en el ejemplo es la siguiente: si tenemos 3 tipos de pasteles de luna, las existencias son de 18, 15 y 100.000 toneladas respectivamente, y el precio de venta total es de 75, 72 y 4.500 millones de yuanes, respectivamente. Si la demanda máxima en el mercado es de solo 200,000 toneladas, entonces nuestra estrategia de beneficio máximo debería ser vender las 150,000 toneladas del segundo pastel de luna y 50,000 toneladas del tercer pastel de luna, y obtener 72 + 45/2 = 9.45 (mil millones de yuanes ).

Formato de entrada:
cada entrada contiene un caso de prueba. Cada caso de prueba primero da un número entero positivo N que no excede 1000 para indicar el número de tipos de pasteles de luna, y un número entero positivo D que no excede 500 (en 10,000 toneladas) para indicar la demanda máxima en el mercado. La siguiente línea da N números positivos para indicar el inventario de cada tipo de pastel de luna (en 10,000 toneladas); la última línea da N números positivos para indicar el precio de venta total de cada tipo de pastel de luna (en 100 millones de yuanes). Los números están separados por espacios.

Formato de salida:
para cada conjunto de casos de prueba, genere el beneficio máximo en una línea, con 100 millones de yuanes como unidad y con una precisión de 2 decimales.

Muestra de entrada:

3 20
18 15 10
75 72 45

` Salida de muestra:

94.50

Código resuelto

#include<iostream>
#include<algorithm>
using namespace std;
struct yb{
    
    
	double zjg;//总售价 
	double sl;//库存数量 
	double dj=0.0;//单价 
}a[1000]; //用于存各种月饼
 
bool cmp(yb a,yb b)//用于将月饼单价逆序排列 
{
    
    
	return a.dj>b.dj;
}
int main()
{
    
    
	int m,n;
	cin>>m>>n;
	int i;
	double money=0.0;
	for(i=0;i<m;i++)
	{
    
    
		cin>>a[i].sl;
	}
	for(i=0;i<m;i++)
	{
    
    
		cin>>a[i].zjg;
	}
	for(i=0;i<m;i++)
	{
    
    
		a[i].dj=a[i].zjg/a[i].sl;
	}
	sort(a,a+m,cmp);//将月饼单价逆序排列 
	for(i=0;i<m;i++)
	{
    
    
		if(n<a[i].sl) break;//如果剩余需求量小于某一种月饼的库存量循环停止
		money+=a[i].zjg;  
		n-=a[i].sl;
	}
	money+=n*a[i].dj;//求剩余需求量小于某一种月饼的库存量时的钱数 ,,此处i为循环停止后的那一种月饼 
	printf("%.2lf",money);
	return 0;
}


Los grandes son bienvenidos para asesorar. Si no lo entiende, puede comentar o agregar Q2651877067. Si lo ve, ¡responderá lo antes posible! ! ! !

Supongo que te gusta

Origin blog.csdn.net/mmmjtt/article/details/113921789
Recomendado
Clasificación