好麻烦


私信TA

用户名:15271718738

访问量:974

签 名:

等  级
排  名 11536
经  验 1024
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校 宇宙大学
专  业

  自我简介:

TA的其他文章

解题思路:
    将我的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 人评分

  评论区

  • «
  • »