【C/C++】贪心/算法笔记4.4/PAT B1020月饼/PAT B1023组内最小数
- 简单贪心
所谓简单贪心,就是每步都取最优的一种方法。
月饼问题:有N种月饼,市场最大需求量D,给出每种月饼的库存量和总售价。
思路:从贵的往便宜的卖。如果当前的已经卖完了,就卖下一个。如果剩余D不足,就退出。
知识点:
对月饼单价排序后保证总数不会变:用结构体存储。
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1010;
//创建结构体
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 (D == 0) break;
if (cake[i].store <= D) //如果库存量小于需求量
{
D -= cake[i].store; //将第i种全部卖掉
ans += cake[i].sell; //将第i种的总售价加上
}
else
{
ans += cake[i].price * D;
D = 0;
}
}
printf("%.2f\n",ans);
}
组个最小数:
#include <iostream>
using namespace std;
int main()
{
int cnt[10];
for(int i = 0; i < 10; i++)
{
scanf("%d", &cnt[i]);
}
//找到第一个不为0的最小数,输出。
for(int i = 1; i < 10; i++)
{
if (cnt[i] > 0)
{
printf("%d", i);
cnt[i]--;
break;
}
}
//从小到大输出
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < cnt[i]; j++)
{
printf("%d", i);
}
}
system("pause");
}
区间贪心
左端点从大到小排序
include
include
using namespace std;
const int maxn = 110;
struct interval
{
int x,y;
}I[maxn];
bool cmp(interval a, interval b)
{
if (a.x == b.x) return a.y < b.y;
else return a.x > b.x;
}
int main()
{
int n;
scanf("%d", &n);
for(int i = 0; i < n; i++)
{
scanf("%d%d", &I[i].x, &I[i].y);
}
sort(I, I+n, cmp); //n组数据
int ans = 1; //记录不相交区间个数
int lastX = I[0].x; //第一个必取
for(int i = 1; i < n; i++)
{
if(I[i].y <= lastX)
{
lastX = I[i].x;
ans++;
}
}
printf("%d\n", ans);
system("pause");
}
右端点从小到大排序
include
include
using namespace std;
const int maxn = 110;
struct interval
{
int x,y;
}I[maxn];
bool cmp(interval a, interval b)
{
if (a.y == b.y) return a.x > b.x;
else return a.y < b.y;
}
int main()
{
int n;
scanf("%d", &n);
for(int i = 0; i < n; i++)
{
scanf("%d%d", &I[i].x, &I[i].y);
}
sort(I, I+n, cmp); //n组数据
int ans = 1; //记录不相交区间个数
int lastY = I[0].y; //第一个必取
for(int i = 1; i < n; i++)
{
if (I[i].x >= lastY) ans++;
lastY = I[i].y;
}
printf("%d\n", ans);
system("pause");
}
【C/C++】贪心/算法笔记4.4/PAT B1020月饼/PAT B1023组内最小数的更多相关文章
- 【算法笔记】B1040 有几个PAT
1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位(P),第 ...
- 算法笔记_127:蓝桥杯2017模拟赛-本科组习题解答(Java)
目录 1 算年龄 2 猜算式 3 排列序数 4 字符串比较 5 还款计算 6 滑动解锁 7 风险度量 PS:以下代码部分仅供参考,若有不当之处,还请路过同学指出哦~ 1 算年龄 标题:算年龄 英 ...
- 【算法笔记】B1023 组个最小数
1023 组个最小数 (20 分) 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 ...
- PAT (Basic Level) Practice 1023 组个最小数
个人练习 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的 ...
- PAT B1020 月饼(25)
题目描述 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部 ...
- PAT B1023 组个最小数(20)
题目描述 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的 ...
- PAT B1020 月饼
#include<iostream> #include<algorithm> using namespace std; struct mooncake { double sto ...
- PAT (Basic Level) Practice 1023 组个最小数 分数 20
给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就 ...
- 月饼问题PAT B1020(贪心算法)
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部分库存.样 ...
随机推荐
- Power Platform Center of Excellence (CoE) 部署完成&主要内容说明
随着目前国内使用Power Platform的企业越来越多,而在跟客户交付项目时,客户经常想了解平台的一些基本情况: Power Platform 有多少环境,分别是谁创建和管理? Power Pla ...
- 公司项目被扫出来一个Druid未授权访问漏洞
这不是阿里druid的监控页面吗?接下来查看项目配置 1.在web.xml中有如下配置: <filter> <filter-name>DruidWebStatFilter< ...
- silky微服务框架服务注册中心介绍
目录 服务注册中心简介 服务元数据 主机名称(hostName) 服务列表(services) 终结点 时间戳 使用Zookeeper作为服务注册中心 使用Nacos作为服务注册中心 使用Consul ...
- python实现色彩空间转换
目录: (一)调用转换函数实现图像色彩空间转换------ cv2.cvtColor函数 (二)色彩空间转换,利用inrange函数过滤视频中的颜色,实现跟踪某一颜色 正文: (一)调用转换函数实现图 ...
- [hdu6601]Keen On Everything But Triangle
有两个结论:1.排序后,答案一定是连续的三个数:2.当序列长度超过44一定有三个相同的数(因为即使该序列是斐波那契数列,此时也超过了1e9),然后用主席树等数据结构(略卡常,建议主席树)来维护前45大 ...
- 接上篇:Git Worktree 高级使用,这样清爽多了
前言 上一篇文章 Git Worktree 大法真香 带大家了解了 git worktree 是如何帮助我同时在多个分支工作,并且互不影响的.但是创建 worktree 的目录位置不是在当前项目下,总 ...
- [ARC098B] Xor Sum 2
关于异或运算和代数和运算有很不错的性质: \(xor_{i = 1} ^ {n}a_i \leq \sum_{i = 1} ^ n a_i\) 所以我们考虑一段区间按题目来说是合法的,即 \(xor_ ...
- pip 与 conda
pip 与 conda 简介 pip 是接触 python 后最早认识的包管理工具.通过使用 pip 能够自动下载和解决不同 python 模块的依赖问题,使 python 的配置过程变得简单. 与 ...
- 【R】爬虫案例
爬取豆瓣相册 library(RCurl) library(XML) myHttpheader <- c("User-Agent"="Mozilla/5.0 (Wi ...
- TD课程通最终版本体验
功能上,新版本增加了学校教室的上课情况,有无课程可以清楚查询,如下图: 在添加课程的设置上有改进,相比于之前编辑课程后不能保存,新版本在可保存的基础上又增加了登陆教务系统的功能,学生使用更加方便快捷, ...