2019校招真题在线编程-牛牛找工作

时间限制:2秒 空间限制:65536K 热度指数:77851

本题知识点: 网易 Java工程师 C++工程师 iOS工程师 安卓工程师 运维工程师 前端工程师 算法工程师 PHP工程师 测试工程师 排序 模拟 贪心

题目描述

为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们。牛牛的小伙伴太多了,于是他只好把这个任务交给了你。

输入描述:

每个输入包含一个测试用例。每个测试用例的第一行包含两个正整数,分别表示工作的数量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

思路:首先将题目的难度和每个人的能力值进行升序,这样在找到最合适的报酬情况下下一个人(能力值比上一个高)最低可以达到上一个人的报酬然后从当前题目继续往后找就ok了。代码:
 1 #include<bits/stdc++.h>
 2 #include<algorithm>
 3 using namespace std;
 4 const int N=100000+10;
 5 struct Work{
 6     int d;
 7     int p;
 8 };
 9 struct Person{
10     int a;
11     int p;
12     int index;
13 };
14
15 bool cmp1(Work a,Work b){
16     return a.d<b.d;
17 }
18 bool cmp2(Person a,Person b){
19     return a.a<b.a;
20 }
21 bool cmp3(Person a,Person b){
22     return a.index<b.index;
23 }
24 int main()
25 {
26     int m;
27     int n;
28     scanf("%d%d", &n,&m);
29     Work work[N];
30     for(int i=0;i<n;i++){
31         scanf("%d%d",&work[i].d,&work[i].p);
32     }
33     Person person[N];
34     for(int i=0;i<m;i++){
35         scanf("%d",&person[i].a);
36         person[i].index=i;
37     }
38     sort(work,work+n,cmp1);
39     sort(person,person+m,cmp2);
40     int j=0;
41     int max_money=0;
42     for(int i=0;i<m;i++){
43         for(;j<n;j++){
44             if(person[i].a<work[j].d){
45                 break;
46             }
47             max_money=max(max_money,work[j].p);
48         }
49         person[i].p=max_money;
50     }
51     sort(person,person+m,cmp3);
52     for(int i=0;i<m;i++){
53         printf("%d\n", person[i].p);
54     }
55     return 0;
56 }

原文地址:https://www.cnblogs.com/djf666/p/11741419.html

时间: 2024-07-30 23:44:20

2019校招真题在线编程-牛牛找工作的相关文章

2017校招真题在线编程-幸运的袋子

题目描述 一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的).如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积.例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的.现在让你编程计算一下你可以获得的多少种不同的幸运的袋子. 输入描述: 第一行输入一个正整数n(n ≤ 1000) 第二行为n

2016年上半年软考真题在线模拟测试,提前知晓你的成绩

2016年上半年软考于5月21日结束了,考试完想知道结果的急切心理,几乎每个经历过上学时代的人都能深刻体验到.如果你想知道你考的怎么样,如果你想要提前知道你的成绩,如果你想知道你哪个地方出错了,如果你想知道你哪个地方知识掌握的不够想要更深入的去理解,那就来希赛软考学院吧!希赛软考学院提供2016年上半年软考真题在线模拟测试,有标准的参考答案,有专业老师的解析视频,让你提前知晓你的成绩,让你再次巩固学习. 希赛授课专家介绍 张友生,计算机应用技术博士,软考培训教程系列丛书主编,考试指定教材<系统分

阿里巴巴2016数据挖掘工程师真题在线测

1.想要了解上海市小学生的身高,需要抽取500个样本,这项调查中的样本是? A.从中抽取的500名学生的身高 B.上海市全部小学生的身高 C.从中抽取的500名小学生 D.上海市全部小学生 2.以下对k-means聚类算法解释正确的是 A.能自动识别类的个数,随即挑选初始点为中心点计算 B.能自动识别类的个数,不是随即挑选初始点为中心点计算 C.不能自动识别类的个数,随即挑选初始点为中心点计算 D.不能自动识别类的个数,不是随即挑选初始点为中心点计算 3.以下哪个是常见的时间序列算法模型 A.R

校招真题练习021 迷路的牛牛(网易)

迷路的牛牛 题目描述牛牛去犇犇老师家补课,出门的时候面向北方,但是现在他迷路了.虽然他手里有一张地图,但是他需要知道自己面向哪个方向,请你帮帮他. 输入描述:每个输入包含一个测试用例.每个测试用例的第一行包含一个正整数,表示转方向的次数N(N<=1000).接下来的一行包含一个长度为N的字符串,由L和R组成,L表示向左转,R表示向右转. 输出描述:输出牛牛最后面向的方向,N表示北,S表示南,E表示东,W表示西. 1 n = int(input().strip()) 2 D = input().s

精灵鼠从入口到出口最少减少速度(2019年哔哩哔哩校招真题)题解

题目以及输入输出描述: 题目很短.意思也很容易读懂. 题目要求就是  有一只老鼠,进入了一个迷宫,迷宫地图的大小为n*n.老鼠要从(起点)(0,0)坐标位置 到达 终点 (n-1,n-1)的位置. 老鼠的行动方式只有两种 —— 向下和向前. 每一个点都会让老鼠的速度降低(减少).求老鼠到达终点的时候最少减少的速度. 解题思路: 我们先考虑最后一步 到达终点,这一步可以从哪里来呢?根据题目分析因为老鼠只可以向下或者向前.所以到达终点(n-1,n-1)前,老鼠不是在(n-1,n-2), 就是在(n-

2016校招真题编程-懂二进制

题目描述 世界上有10种人,一种懂二进制,一种不懂.那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299 输出例子: 7 解题思路:异或,除二取余 源代码: package SuperHakceMainPackage; import java.util.Scanner; public class SuperHakceMian { int countBitDiff(int n,int m){ return n ^ m; } int findN

2018 拼多多 校招真题 最大乘积

最大乘积 时间限制:1秒 空间限制:32768K 热度指数:8197 校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE. 题目描述 给定一个无序数组,包含正数.负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述: 无序整数数组A[n] 输出描述: 满足条件的最大乘积 示例1 输入 3 4 1 2 输出 8 思路分析:看到这个题目,下意识想到用Arrays.sort()排一下序, 因为输入的整数可以是负

校招真题练习019 毕业旅行问题(头条)

毕业旅行问题 题目描述小明目前在做一份毕业旅行的规划.打算从北京出发,分别去若干个城市,然后再回到北京,每个城市之间均乘坐高铁,且每个城市只去一次.由于经费有限,希望能够通过合理的路线安排尽可能的省一些路上的花销.给定一组城市和每对城市之间的火车票的价钱,找到每个城市只访问一次并返回起点的最小车费花销. 输入描述:城市个数n(1<n≤20,包括北京)城市间的车票价钱 n行n列的矩阵 m[n][n] 输出描述:最小车费花销 s 牛客网上对此题的python语言判断似乎有问题,一直超时,之前做剑指O

2016校招真题之小球的距离

1.题目描述 小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推知道全部落到地面不跳,求4个小球一共经过了多少米?(数字都为整数) 给定四个整数A,B,C,D,请返回所求结果. 测试样例: 100,90,80,70 返回:1020 2.代码实现 1 package com.wcy.october; 2 3 /** 4 * 时间:2016年10月16日 题目:小球的距离 5 * 题目描述:小东和三个