乙级 1020 月饼 (25point(s)) Easy only once *贪心问题,简单题
基本思想:
贪心问题的简单题,一般不用考虑启发式贪心,可以直接进行贪心求解;
关键点:
无;
#include<iostream> #include<stdlib.h> #include<stdio.h> #include<vector> #include<string> #include<math.h> #include<algorithm> #include<cstring> #include<map> #include<queue> #include<set> #include<stack> using namespace std; struct node { double value; double ku; }; int m, n; vector<node>moon; bool cmp(node a, node b) { return a.value > b.value; } void charge() { int index = 0; double cnt = 0; while (m != 0&&index<moon.size()) { if (int(moon[index].ku <= m)) { //如果库存可以全部卖光; cnt += moon[index].ku*moon[index].value; m -= int(moon[index].ku); index++; } else { //如果库存不可以全部卖光; cnt += double(m)*moon[index].value; break; } } printf("%.2lf\n", cnt); } int main() { double v; cin >> n >> m; moon.resize(n); for (int i = 0; i < n; i++) { cin >> moon[i].ku; } for (int i = 0; i < n; i++) { cin >> v; moon[i].value = v / moon[i].ku; //获得单价 } sort(moon.begin(), moon.end(), cmp); charge(); return 0; }

浙公网安备 33010602011771号