贪心的"Mixing Milk"(洛谷P1208题题解,Java语言描述)
程序员文章站
2022-06-04 15:44:34
...
题目要求
分析
要对奶农的价格进行排序,优先选择低价格的牛奶,选完当前奶农的全部牛奶再选价格稍高的一位奶农的牛奶,依次选择……
贪心体现在每次优先选择最省钱的买法。
读的数据可能很多,要使用BufferedReader。
AC代码(Java语言描述)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
public class Main {
private static class Person {
int price;
int num;
Person(int price, int num) {
this.price = price;
this.num = num;
}
}
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] line = reader.readLine().split("\\s");
int need = Integer.parseInt(line[0]), num = Integer.parseInt(line[1]);
Person[] array = new Person[num];
for (int i = 0; i < num; i++) {
line = reader.readLine().split("\\s");
array[i] = new Person(Integer.parseInt(line[0]), Integer.parseInt(line[1]));
}
reader.close();
Arrays.sort(array, Comparator.comparing(person -> person.price));
long sum = 0;
for (Person p : array) {
if (need > p.num) {
sum += p.num * p.price;
need -= p.num;
} else {
sum += need * p.price;
break;
}
}
System.out.println(sum);
}
}
上一篇: 铺设道路(洛谷P5019题题解,Java语言描述)
下一篇: 8个开发技巧助你薪水更上一层楼
推荐阅读
-
动态规划求解"疯狂的采药"问题(洛谷P1616题题解,Java语言描述)
-
用贪心策略均分纸牌(洛谷P1031题题解,Java语言描述)
-
最大公约数和最小公倍数问题(洛谷P1029题题解,Java语言描述)
-
加括号改变连除式结果(洛谷P2651题题解,Java语言描述)
-
去重的Set解不出“斯诺登的密码”(洛谷P1603题题解,Java语言描述)
-
求子集元素之和(洛谷P2415题题解,Java语言描述)
-
数列分段(洛谷P1181题题解,Java语言描述)
-
在小范围内[打表]验证哥德巴赫猜想(洛谷P1579题题解,Java语言描述)
-
长方体工艺品の切割(洛谷P5729题题解,Java语言描述)
-
大肆宣传~打表判断回文质数(洛谷P1217题题解,Java语言描述)