解题思路:
将我的Python代码给gpt翻译成Java即可。
注意事项:
注意int变成long,不然第九题是错的。
参考代码:
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); long n = scanner.nextLong(); List<Map.Entry> tmp = new ArrayList<>(); // 创建一个列表用于存储键值对 for (long i = 0; i < n; i++) { long a = scanner.nextLong(); // 读取键值对中的键a long b = scanner.nextLong(); // 读取键值对中的值b tmp.add(new AbstractMap.SimpleEntry<>(a, b)); // 将读取的键值对加入列表 } Map<Long, List> dic = giveMeADict(tmp); // 调用函数生成字典 long ans = 0; // 初始化答案为0 for (List values : dic.values()) { ans += cost(values, n); // 对每个值列表计算代价并累加到答案上 } System.out.println(ans); // 打印最终答案 } public static Map<Long, List> giveMeADict(List<Map.Entry> lis) { Map<Long, List> dic = new HashMap<>(); // 创建一个字典 for (Map.Entry item : lis) { // 遍历列表中的键值对 if (!dic.containsKey(item.getKey())) { // 如果字典中不包含当前键 List valueList = new ArrayList<>(); // 创建一个值列表 valueList.add(item.getValue()); // 将值加入值列表 dic.put(item.getKey(), valueList); // 将键值对加入字典 } else { // 如果字典中包含当前键 dic.get(item.getKey()).add(item.getValue()); // 将值加入对应键的值列表 } } return dic; // 返回生成的字典 } public static long cost(List lis, long n) { if (lis.size() <= n / 10) { // 如果值列表长度小于等于n的十分之一 return 0; // 返回0,不需要额外代价 } Collections.sort(lis); // 对值列表进行排序 long sum = 0; // 初始化代价总和为0 for (long i = 0; i < lis.size() - n / 10; i++) { sum += lis.get((int)i); // 将前n的九分之一的值累加到代价总和上 } return sum; // 返回最终代价总和 } }
0.0分
2 人评分
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:497 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:674 |
程序员的表白 (C语言代码)浏览:668 |
WU-判定字符位置 (C++代码)浏览:1408 |
Wu-求圆的面积 (C++代码)浏览:1901 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:1435 |
DNA (C语言描述,蓝桥杯)浏览:1555 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:550 |
1051(奇了怪了)浏览:659 |
DNA (C语言代码)浏览:750 |