PAT A1070 Mooncake(同B1020)

本文深入探讨了月饼销售策略的算法实现,通过分析市场需求与库存量的关系,采用结构体数组存储月饼信息,计算并排序单价,以实现最大销售额的目标。文章提供了三种不同的代码实现方案,帮助读者理解算法细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PAT A1070 Mooncake(同B1020)

在这里插入图片描述

Sample Input:

3 200
180 150 100
7.5 7.2 4.5

Sample Output:

9.45
wordmeaning
crustsn.面包皮,wlke
inventoryn.详细目录,存货清单
  • 思路 1:
    用一个结构体数组存储每种月饼,输入时计算出单价(总价/库存),再按单价排序,每次都选择单价最高的拿(如果够拿,即市场需求不少于库存),拿完更新需求,直到需求比库存小了(else),就只拿需求的量,在这一过程中将结果(总售价)累加到res变量中

  • 坑点:
    “随后一行给出 N 个正数表示每种月饼的库存量” ,题中只说了正数所以不同月饼的库存和价格可以是浮点型

  • code 1:

#include<bits/stdc++.h>
using namespace std;
struct MoonCake{
	double piece;
	double sell;
	double store;
}mc[1010];
bool cmp(MoonCake a, MoonCake b){
	return a.piece > b.piece;
}
int main(){
	int n;
	double m;
	scanf("%d %lf", &n, &m);
	for(int i = 0; i < n; ++i){
		scanf("%lf", &mc[i].store);
	}
	for(int i = 0; i < n; ++i){
		scanf("%lf", &mc[i].sell);
		mc[i].piece = mc[i].sell / mc[i].store;	//求单价 
	}	
	sort(mc, mc + n, cmp);
	double result = 0.0;
	for(int i = 0; i < n; ++i){
		if(mc[i].store <= m){
		//如果mc[i]的库存<=市场需求 
			m -= mc[i].store;	//更新当前需求量 
			result += mc[i].sell;
		} 
		else{
		//如果库存比需求多了,只卖需求的量(并结束循环) 
			result += m * mc[i].piece;
			break;
		}
	}
	printf("%.2f\n", result);
	return 0;
} 	
  • T2 code:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1010;
struct M{
	double price, num, value;	//Wrong1:正数 != 正整数 
}mooncake[maxn];

bool cmp(M a, M b){
	return a.price > b.price;
}
int main(){
	int n;
	double need;
	scanf("%d %lf", &n, &need);
	for(int i = 0; i < n; ++i){
		scanf("%lf", &mooncake[i].num);
	}
	for(int i = 0; i < n; ++i){
		scanf("%lf", &mooncake[i].value);
		mooncake[i].price = mooncake[i].value / mooncake[i].num;
	}
	sort(mooncake, mooncake+n, cmp);
	double sum = 0.0; 
	for(int i = 0; i < n && need > 0; ++i){
		double num = need > mooncake[i].num ? mooncake[i].num : need;
		sum += mooncake[i].price *  num;
		need -= num;
	}
	printf("%.2f", sum);
	return 0;
} 
  • T3 code:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1010;
struct Mooncake
{
    double price, total_price, amount;
}mooncake[maxn];

bool cmp(Mooncake a, Mooncake b)
{
    return a.price > b.price;
}
int main()
{
    int n, d;
    scanf("%d %d", &n, &d);
    for(int i = 0; i < n; ++i)
    {
        scanf("%lf", &mooncake[i].amount);  //WRONG 1: 用int型样例2错误
    }
    for(int i = 0; i < n; ++i)
    {
        scanf("%lf", &mooncake[i].total_price);
        mooncake[i].price = mooncake[i].total_price / mooncake[i].amount;
    }
    sort(mooncake, mooncake+n, cmp);
    int idex = 0;
    double sum_price = 0;
    while(d > 0 && idex < n)   //WRONG 2:不加idex<n样例3会段错误
    {
        if(d > mooncake[idex].amount)
        {
            sum_price += mooncake[idex].total_price;
            d -= mooncake[idex].amount;
        }else
        {
            sum_price += mooncake[idex].price * d;
            break;
        }
        idex++;
    }
    printf("%.2f", sum_price);
    return 0;
}

### Mooncake简介 Mooncake 是由月之暗面 Kimi 联合清华大学等机构共开发的一种以 KVCache 为核心的分布式推理架构[^2]。该架构旨在提升大规模语言模型的推理性能,特别是在长上下文场景下的表现尤为突出。 #### 架构特点 Mooncake 的核心设计理念围绕着键值缓存(KVCache),通过分布式的存储和计算分离策略来优化资源利用效率[^4]。这种设计使得 Mooncake 在处理复杂任务时能够实现高吞吐量以及低延迟的表现。具体来说: - **高效资源管理**:通过对内存和网络带宽的有效分配,减少冗余操作并提高整体系统的运行效率。 - **支持多样化应用需求**:无论是自然语言理解还是个性化推荐系统等领域都能受益于 Mooncake 提供的强大技术支持能力。 #### 配置说明 为了部署 Mooncake ,需要准备好相应的配置文件 `mooncake.json` 。此文件包含了预填充 URL、解码 URL 及元数据服务器地址等重要参数设置信息[^3]。下面是一个典型的 JSON 格式示例: ```json { "prefill_url": "192.168.0.137:13003", "decode_url": "192.168.0.139:13003", "metadata_server": "192.168.0.139:2379", "protocol": "rdma", "device_name": "erdma_0" } ``` 其中 `"protocol"` 字段可以选择 `"rdma"` 或者 `"tcp"` 来指定通信协议类型;而当选用 TCP 协议时,则需将 `"device_name"` 设置为空字符串[](^3])。 #### 性能优势对比分析 基于模拟数据显示,在面对含有大量长序列输入的数据集时,相比其他类解决方案如 vLLM , Mooncake 展现出更加优越的技术特性——即使是在严格遵循特定时间约束条件下仍可达到更高水平的服务质量(QoS)。以下是两者主要差异点总结表: | 特性 | Mooncake | vLLM | |--------------------|-----------------------------|-------------------------------| | 请求处理方式 | 批量 | 单独 | | 对SLO影响程度 | 较小 | 显著增加 | | 吞吐量增幅范围(%) | 50%-525% | — | 由此可见,得益于独特的两阶段分解设计方案,Mooncake 成功规避了传统方法可能带来的负面效应,并实现了显著优于竞争对手的整体效能指标改进效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值