由于面粉产品利润很低,所以降低原材料小麦的收购价格就变得十分重要。帮助A公司找到最优的小麦采购方案。 A公司从一些农民手中采购小麦,并且每一位农民为这些工厂提供的价格是不同的。此外,每位农民每天能提供的小麦数量是一定的。每天A公司可以从农民手中采购到小于或者等于农民最大产量的整数数量的小麦。 给出A公司每天对小麦的需求量,还有每位农民提供的小麦单价和最高供应数量。计算采购满足需求的小麦所需的最小花费。 【输入形式】 第 1 行共二个数值:N,(0<=N<=2,000,000)是需要小麦的总数;M,(0<= M<=5,000)是提供小麦的农民个数。 第 2 到 M+1 行:每行二个整数:Pi 和 Ai。 Pi(0<= Pi<=1,000) 是农民 i 的小麦的单价。 Mi(0 <= Ai <= 2,000,000)是农民 i 一天能卖给A公司的小麦最大数量。 【输出形式】 单独的一行包含单独的一个整数,表示A公司拿到所需的小麦所需要的最小费用。 【样例输入】 100 5 5 20 9 40 3 10 8 80 【样例输出】 630用C语言编写
时间: 2024-02-06 21:12:49 浏览: 179
以下是C语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 2000000
#define MAX_M 5000
// 农民结构体
typedef struct {
int price; // 单价
int amount; // 数量
} Farmer;
Farmer farmers[MAX_M]; // 农民数组
int n; // 需要的小麦总数
int m; // 农民个数
// 比较函数,用于农民结构体数组的排序
int cmp(const void *a, const void *b) {
Farmer *f1 = (Farmer *)a;
Farmer *f2 = (Farmer *)b;
return f1->price - f2->price;
}
int main() {
scanf("%d %d", &n, &m);
for (int i = 0; i < m; i++) {
scanf("%d %d", &(farmers[i].price), &(farmers[i].amount));
}
// 按照单价从小到大排序
qsort(farmers, m, sizeof(Farmer), cmp);
// 从单价最低的农民开始采购小麦
int cost = 0;
for (int i = 0; i < m; i++) {
Farmer *f = &(farmers[i]); // 当前农民
if (n <= f->amount) { // 当前农民能够满足需求
cost += n * f->price;
break;
} else { // 当前农民不能满足需求
cost += f->amount * f->price;
n -= f->amount;
}
}
printf("%d\n", cost);
return 0;
}
```
代码思路:
1. 定义一个农民结构体,包含单价和最高供应数量两个属性。
2. 定义农民数组 `farmers`,以及需要的小麦总数 `n` 和农民个数 `m`。
3. 读入每个农民的单价和最高供应数量,并保存到 `farmers` 数组中。
4. 按照单价从小到大对 `farmers` 数组进行排序。
5. 从单价最低的农民开始采购小麦,如果当前农民能够满足需求,则按照当前农民的单价计算花费;否则,从当前农民处采购最大数量的小麦,继续从下一个农民采购,直到满足需求为止。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pptx](https://img-home.csdnimg.cn/images/20241231044947.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)