1 条题解
-
0
#include <bits/stdc++.h> using namespace std; // 定义结构体存储单价和数量,j-单价,l-数量 struct s{ int j,l; }; // 自定义比较函数,按单价升序排序 bool cmp(s a,s b){ return a.j<b.j; } int main() { int m,n; cin>>m>>n; // [1] 输入需要的总数量m、物品种类数n s arr[n]; // [2] 定义数组存储所有物品的单价和数量信息 // [3] 循环输入每个物品的单价和数量 for(int i=0;i<n;i++) cin>>arr[i].j>>arr[i].l; sort(arr,arr+n,cmp); // [4] 按单价从小到大排序,实现贪心策略 int sum=0; // [5] 初始化总花费/总价值为0 // [6] 贪心选取:从单价最低的开始选取,直到满足总数量需求 for(int i=0;;i++){ // 剩余需求数量大于当前物品的数量,全部选取 if(m>=arr[i].l){ sum+=arr[i].j*arr[i].l; m-=arr[i].l; }else{ // 剩余需求数量不足,选取剩余数量即可 sum+=arr[i].j*m; m=0; break; } } cout<<sum; // [7] 输出最终总花费/总价值 return 0; }
- 1
信息
- ID
- 1025
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 4
- 已通过
- 2
- 上传者