PAT B1020
PAT B1020
解决思路 :贪心法,每次选取单价最高的月饼。
先上一个自己错误的解法
#include <cstdio>
#include <algorithm>
using namespace std;
double num[1010];
double price[1005];
double ans = 0;
int main() {
int n, d;
scanf("%d%d", &n, &d);
for (int i = 0; i < n; i++) {
scanf("%lf", &num[i]);
}
for (int i = 0; i < n; i++) {
scanf("%lf", &price[i]);
price[i] = price[i] / num[i];
}
sort(price, price + n);
for (int i = n - 1; i >= 0; i--) {
while (num[i] > 0 && d > 0) {
ans += price[i];
num[i]--;
d--;
}
}
printf("%.2f", ans);
return 0;
}
然后是题解
#include <cstdio>
#include <algorithm>
using namespace std;
struct mooncake {
double store; //库存
double sell; //总价
double price; /单价
}cake[1010];
bool cmp(mooncake a, mooncake b) {
return a.price > b.price;
}
int main() {
int n;
double D;
scanf("%d%lf", &n, &D);
for (int i = 0; i < n; i++) {
scanf("%lf", &cake[i].store);
}
for (int i = 0; i < n; i++) {
scanf("%lf", &cake[i].sell);
cake[i].price = cake[i].sell / cake[i].store;
}
sort(cake, cake + n, cmp);
double ans = 0;
for (int i = 0; i < n; i++) {
if (cake[i].store <= D) { //如果需求高于月饼的库存
D -= cake[i].store; //先把第i种全部卖出
ans += cake[i].sell;
} else { //库存高于需求
ans += cake[i].price * D; //只售出该种月饼,数量为需求量,然后break;
break;
}
}
printf("%.2f", ans);
return 0;
}
PAT B1020的更多相关文章
- 月饼问题PAT B1020(贪心算法)
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部分库存.样 ...
- PAT B1020 月饼(25)
题目描述 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部 ...
- PAT B1020 月饼
#include<iostream> #include<algorithm> using namespace std; struct mooncake { double sto ...
- 【C/C++】贪心/算法笔记4.4/PAT B1020月饼/PAT B1023组内最小数
简单贪心 所谓简单贪心,就是每步都取最优的一种方法. 月饼问题:有N种月饼,市场最大需求量D,给出每种月饼的库存量和总售价. 思路:从贵的往便宜的卖.如果当前的已经卖完了,就卖下一个.如果剩余D不足, ...
- PAT题目AC汇总(待补全)
题目AC汇总 甲级AC PAT A1001 A+B Format (20 分) PAT A1002 A+B for Polynomials(25) PAT A1005 Spell It Right ( ...
- 《转载》PAT 习题
博客出处:http://blog.csdn.net/zhoufenqin/article/details/50497791 题目出处:https://www.patest.cn/contests/pa ...
- PAT Judge
原题连接:https://pta.patest.cn/pta/test/16/exam/4/question/677 题目如下: The ranklist of PAT is generated fr ...
- PAT/字符串处理习题集(二)
B1024. 科学计数法 (20) Description: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+ ...
- PAT 1041. 考试座位号(15)
每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座 ...
随机推荐
- 2、Docker基础用法
容器镜像:https://hub.docker.com/ Docker架构图: https://ruby-china.org/topics/22004 Docker使用客户端-服务器(client- ...
- unittest用例执行的顺序
unittest在执行用例(test_xxx)时,并不是按从上到下的顺序执行,有特定的顺序. 示例: import unittest class TestBdd(unittest.TestCase): ...
- 远程和Ubuntu服务器进行Socket通信,使用python和C#(准备篇)
服务器在阿里云上,和一般的本地配置方案不太一样,所以网上的博客里没有解决办法,本人在这里记录一下,方便大家交流. 由于数据要保存到MySQL数据库中,使用python对数据进行操作,爬到数据直接进行保 ...
- node中redis重连
项目node中用到redis ,做了的moudle,但是有个问题,两台redis,一台挂了,redis能自动切换,我的项目却不会自动重连: 查了资料,redis本身是实现了重连机制啊,为什么不自动重连 ...
- selenium 模拟拖动滚动条下拉
senium做自动化测试的过程中,有的页面需要下拉滚动条才能全部加载完成,否则加载不出来就定位不到想要的元素. 参考链接:http://www.cnblogs.com/landhu/p/5761794 ...
- C#图像显示实现拖拽、锚点缩放功能【转】
1.图像拖拽 核心步骤: ①新建Point类型全局变量mouseDownPoint,记录拖拽过程中鼠标位置: ②MouseDown事件记录Cursor位置: ③MouseMove事件计算移动矢量,并更 ...
- 【分享】谈CSS3中display属性的flex布局
最近在学习微信小程序(重新学习微信小程序),在设计首页布局的时候,新认识了一种布局方式display:flex .guide-top{ height: 36%; display: flex; /*fl ...
- ajax入门学习
1. XMLHttpRequest 是 AJAX 的基础. 所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject). XMLHttpReq ...
- centos7版本中ssh相关的设置
1.设置SSH连接端口1.1.关闭SELinux--关闭系统当前selinux# setenforce 0 --关闭系统永久selinux# sed -i 's/SELINUX=enforcing/S ...
- Qt 滚动窗口类
{ QScrollArea *scrollArea = new QScrollArea(this); scrollArea->setFrameStyle(); scrollArea->se ...