牛客网-牛牛找工作

package practice;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;



/**

- 输入描述:

- 每个输入包含一个测试用例。

- 每个测试用例的第一行包含两个正整数,分别表示工作的数量N(N<=100000)和小伙伴的数量M(M<=100000)。

- 接下来的N行每行包含两个正整数,分别表示该项工作的难度Di(Di<=1000000000)和报酬Pi(Pi<=1000000000)。

- 接下来的一行包含M个正整数,分别表示M个小伙伴的能力值Ai(Ai<=1000000000)。

- 保证不存在两项工作的报酬相同。

- 输出描述:

- 对于每个小伙伴,在单独的一行输出一个正整数表示他能得到的最高报酬。一个工作可以被多个人选择。

- 

- 示例1

- 输入

- 3 3 

- 1 100 

- 10 1000 

- 1000000000 1001 

- 9 10 1000000000

- 输出

- 100 

- 1000 

- 1001
  */
  public class FindWork {
  @SuppressWarnings({ "rawtypes", "resource", "unused", "unchecked" })
  public static void main(String args[]){
    Scanner input=new Scanner(System.in);
    int work_num;
    int person_num;
    long Pi[]=new long[100000];
    long Di[]=new long[100000];
    long Ai[]=new long[100000];
    long arg[]=new long[200005]; //人能力值+工作能力值
    long result[]=new long[200005];
    HashMap map=new HashMap();
    work_num=input.nextInt();
    person_num=input.nextInt();
    for(int i=0;i<work_num;i++){
        Di[i]=input.nextLong();
        Pi[i]=input.nextLong();
        arg[i]=Di[i];
    }
    for(int i=0;i<person_num;i++){
        Ai[i]=input.nextLong();
        arg[i+work_num]=Ai[i];
    }
    Arrays.sort(arg);  //对所有能力值进行排序
    int num=0;
    map.put(arg[0],num);
    //过滤掉重复的map中记录能力值和在所有能力值中的索引
    for(int i=1;i<arg.length;i++){
        if(arg[i]!=arg[i-1]){
            num++;
        map.put(arg[i],num);
        }
    }
    //将工作能力值所用到的报酬进行匹配
    for(int i =0;i<work_num;i++){
        result[(int) map.get(Di[i])]=Math.max(result[(int) map.get(Di[i])], Pi[i]);
    }
    //将还没有记录报酬的能力值进行赋值 同时将小于自身能力的最大报酬进行赋值 得到在此能力下可以获得的最大报酬
      for (int i = 1 ; i < work_num+person_num ;i++)
        result[i] = Math.max(result[i],result[i-1]);
      for (int i = 0 ; i < work_num ;i++)
        System.out.println(result[(int) map.get(Ai[i])]);
      
  }

  

}

转载于:https://www.cnblogs.com/lihuidong/p/11385637.html

内容概要:该题库专为研究生入学考试计算机组成原理科目设计,涵盖名校考研真题、经典教材课后习题、章节题库和模拟试题四大核心模块。名校考研真题精选多所知名高校的计算机组成原理科目及计算机联考真题,并提供详尽解析,帮助考生把握考研命题趋势与难度。经典教材课后习题包括白中英《计算机组成原理》(第5版)和唐朔飞《计算机组成原理》(第2版)的全部课后习题解答,这两部教材被众多名校列为考研指定参考书目。章节题库精选代表性考题,注重基础知识与重难点内容,帮助考生全面掌握考试大纲要求的知识点。模拟试题依据历年考研真题命题规律和热门考点,精心编制两套全真模拟试题,并附标准答案,帮助考生检验学习成果,评估应试能力。 适用人群:计划参加研究生入学考试并报考计算机组成原理科目的考生,尤其是需要系统复习和强化训练的学生。 使用场景及目标:①通过研读名校考研真题,考生可以准确把握考研命题趋势与难度,有效评估复习成效;②通过经典教材课后习题的练习,考生可以巩固基础知识,掌握解题技巧;③通过章节题库的系统练习,考生可以全面掌握考试大纲要求的各个知识点,为备考打下坚实基础;④通过模拟试题的测试,考生可以检验学习成果,评估应试能力,为正式考试做好充分准备。 其他说明:该题库不仅提供详细的题目解析,还涵盖了计算机组成原理的各个方面,包括计算机系统概述、数据表示与运算、存储器分层、指令系统、中央处理器、总线系统和输入输出系统等。考生在使用过程中应结合理论学习与实践操作,注重理解与应用,以提高应试能力和专业知识水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值