java数据结构73:牛的选举

73:牛的选举

总时间限制: 

1000ms

内存限制: 

65536kB

描述

    现在有N(1<=n<=50000)头牛在选举它们的总统,选举包括两轮:第一轮投票选举出票数最多的k(1<=k<=n)头牛进入第二轮;第二轮对k头牛重新投票,票数最多的牛当选为总统。< p="">

    现在给出每头牛i在第一轮期望获得的票数Ai(1<=Ai<=1,000,000,000),以及在第二轮中(假设它进入第二轮)期望获得的票数Bi(1<=Bi<=1,000,000,000),请你预测一下哪头牛将当选总统。幸运的是,每轮投票都不会出现票数相同的情况。  

<=n<=50000)头牛在选举它们的总统,选举包括两轮:第一轮投票选举出票数最多的k(1<=k<=n)头牛进入第二轮;第二轮对k头牛重新投票,票数最多的牛当选为总统。<>

输入

第1行:N和K
第2至N+1行:第i+1行包括两个数字:Ai和Bi

输出

当选总统的牛的编号(牛的编号从1开始)

样例输入

5 3
3 10
9 2
5 6
8 4
6 5

样例输出

5

实现代码如下:


import java.util.*;

/**
 * @author baikunlong
 * @date 2020/6/23 12:10
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int k = scanner.nextInt();
        LinkedList<Cow> cows = new LinkedList<>();
        for (int i = 0; i < n; i++) {
            cows.add(new Cow(scanner.nextInt(),scanner.nextInt(),i+1));
        }
        cows.sort(Comparator.comparingInt(o->(o.first)));
        Collections.reverse(cows);
        while (cows.size()>k){
            cows.removeLast();
        }
        cows.sort(Comparator.comparingInt(o->(o.second)));
        Collections.reverse(cows);
        System.out.println(cows.get(0).index+"");

    }
    static class Cow{
        int first;
        int second;
        int index;

        public Cow(int first, int second, int index) {
            this.first = first;
            this.second = second;
            this.index = index;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/baikunlong/article/details/106931117