牛客网--牛牛找工作

题目描述

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

输入描述:

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

一开始看到这个题的思路是按照工作酬金给工作排序,之后通过循环,寻找每个人能力范围之内酬金最高的工作,后来发现这样时间复杂度太高,通过率是80%

优化思路是:不仅给各项工作按酬金排序,同时按照每个人的能力给小伙伴排序,如果这项工作连能力高的小伙伴都无法胜任,那能力低的小伙伴又怎么会被聘用呢?因此之前能力高的小伙伴无法胜任的工作,排在后面的小伙伴自然不用再看。

将每个人小伙伴可以得到的酬金分配给他们之后,再恢复小伙伴一开始的次序就好(即输入时的次序)

代码:

#include<stdio.h>
#include<iostream>
#include <algorithm>
using namespace std;
typedef struct Stu1
{
    int a;  //a表示该项工作的难度
    int b;  //b表示该项工作的酬金
}Stu;
typedef struct Person1
{
    int No;       //No是为了记录小伙伴一开始的次序,便于之后恢复次序
    int Ability;  //Ability表示小伙伴的能力
}Person;
bool cmp1(Stu x,Stu y)
{
    return x.b > y.b;
}
bool cmp2(Person x,Person y)
{
    return x.Ability > y.Ability;
}
bool cmp3(Person x,Person y)
{
    return x.No < y.No;
}
int main()
{
    int N,M,i,j;
    int flag;
    scanf("%d%d",&N,&M);
    Stu stu[N],t;
    Person person[M];  //小伙伴
    for(i=0;i<N;i++)
    {
        scanf("%d%d",&stu[i].a,&stu[i].b);
    }
    for(i=0;i<M;i++)
    {
        scanf("%d",&person[i].Ability);
        person[i].No=i;
    }
    sort(stu,stu+N,cmp1);
    sort(person,person+M,cmp2);
    j=0;
    for(i=0;i<M;i++)
    {
        flag =0;
        for(;j<N;)     // j++未放在这里,就是为了优化程序,让一些没必要的工作不再循环,降低时间复杂度
        {
            if(stu[j].a<=person[i].Ability)
            {
                flag=1;
                person[i].Ability=stu[j].b;
                break;
            }
            j++;
        }
        if(flag==0)
        {
            person[i].Ability=0;
        }
    }
    sort(person,person+M,cmp3);   //恢复小伙伴之前的次序
    for(i=0;i<M;i++)
    {
        printf("%d\n",person[i].Ability);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【测试设计】基于正交法的测试用例设计工具--PICT

前言 我们都知道成对组合覆盖是一种非常有效的测试用例设计方法&#xff0c;但是实际工作过程中当成对组合量太大&#xff0c;我们往往很难做到有效的用例覆盖。 PICT是微软公司出品的一款成对组合命令行生成工具,它很好的解决了上述的难题。使用它我们可以有效地按照两两测试的…

Alpha fold: 人工智能在蛋白质结构预测上跑赢人类的启示

来自孙卫涛科学网博客2020年12月&#xff0c;Alpha Fold2在CASP14上 获得了惊人的进步&#xff0c;其蛋白质结构预测的能力已经达到了与实验方法相媲美的程度&#xff0c;国内外该领域的专家学者都为之惊叹&#xff0c;同时也都感受到巨大的压力&#xff0c;人工智能首次把一个…

nginx解决浏览器跨域问题_前端通过Nginx反向代理解决跨域问题

在前面写的一篇文章SpringMVC解决跨域问题&#xff0c;我们探讨了什么是跨域问题以及SpringMVC怎么解决跨域问题&#xff0c;解决方式主要有如下三种方式:JSONPCORSWebSocket可是这几种方式都是基于服务器配置的&#xff0c;即对于自己的网站是可以通过这几种方式解决的&#x…

android view使用方法,android – 如何使用getView()方法,它在哪里被调用?

我是Android开发的新手&#xff0c;并且一直遵循Android网站上提供的教程。我目前在视图教程部分&#xff0c;特别是Grid Views&#xff1a;Hello, Grid View Tutorial的教程。我无法通过适配器了解视图的形式。我明白您必须覆盖适配器类中的getView()方法&#xff0c;并且在此…

牛客网--被3整除

题目描述 小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。 并且小Q对于能否被3整除这个性质很感兴趣。 小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。 输入描述: 输入包括两个整数l和r(1 < l < r < …

卷积神经网络爬虫实现新闻在线分类系统

卷积神经网络&&爬虫实现网易新闻自动爬取并分类 项目地址 采用THUCnews全部数据集进行训练&#xff0c;效果如下。 详细实现见./text_classification 部署步骤如下&#xff1a; 运行环境 服务器&#xff1a;Ubuntu 16.04 数据库&#xff1a;Mysql 5.6 python&#xf…

搞基础理论研究有什么用?

来源&#xff1a;数学中国人类文明的诞生是一个奇迹&#xff0c;构筑在现代科学技术基础之上的现代人类文明的诞生更是奇迹中的奇迹。这个奇迹中的奇迹的根基是现代技术及其广泛应用&#xff0c;而现代技术的根基则是现代科学&#xff0c;科学的根基是以数学为主要工具的基础科…

android传感器博客,Android实现接近传感器

本文实例为大家分享了Android实现接近传感器的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下1.接近传感器检测物体与听筒(手机)的距离&#xff0c;单位是厘米。一些接近传感器只能返回远和近两个状态&#xff0c;如我的手机魅族E2只能识别到两个距离&#xff1a;0CM…

python 内存分析_python内存管理分析

本文较为详细的分析了python内存管理机制。分享给大家供大家参考。具体分析如下&#xff1a;内存管理&#xff0c;对于Python这样的动态语言&#xff0c;是至关重要的一部分&#xff0c;它在很大程度上甚至决定了Python的执行效率&#xff0c;因为在Python的运行中&#xff0c;…

牛客网--牛牛的闹钟

牛牛总是睡过头&#xff0c;所以他定了很多闹钟&#xff0c;只有在闹钟响的时候他才会醒过来并且决定起不起床。从他起床算起他需要X分钟到达教室&#xff0c;上课时间为当天的A时B分&#xff0c;请问他最晚可以什么时间起床 输入描述: 每个输入包含一个测试用例。 每个测试用…

由内而外:大脑是如何形成感官记忆的

大数据文摘出品来源&#xff1a;sciencedaily编译&#xff1a;张大笔茹通常&#xff0c;大脑会对我们感官收集的信息进行编码。为了感知环境并与之进行建设性的互动&#xff0c;这些感官信号需要在以往的经验和当前目标的背景下进行解释。最新一期的《科学》杂志上&#xff0c;…

android设置大小能用小数,Android中关于保留小数点位数的处理

保留两位小数方法一&#xff1a;{double c 3.154215;java.text.DecimalFormat myformatnew java.text.DecimalFormat("0.00");String str myformat.format(c);}方式二&#xff1a;{java.text.DecimalFormat df new java.text.DecimalFormat("#.00");df.…

oracle clob截取_Oracle数据库设计规范建议

Oracle-数据库设计规范建议来源于项目资料目的本规范的主要目的是希望规范数据库设计&#xff0c;尽量提前避免由于数据库设计不当而产生的麻烦&#xff1b;同时好的规范&#xff0c;在执行的时候可以培养出好的习惯&#xff0c;好的习惯是软件质量的很好的保证。数据库设计是指…

牛客网--19校招--俄罗斯方块

题目描述 小易有一个古老的游戏机&#xff0c;上面有着经典的游戏俄罗斯方块。因为它比较古老&#xff0c;所以规则和一般的俄罗斯方块不同。 荧幕上一共有 n 列&#xff0c;每次都会有一个 1 x 1 的方块随机落下&#xff0c;在同一列中&#xff0c;后落下的方块会叠在先前的方…

揭秘美国空军如何用AI技术提升“战斗力”

以AI技术为基础&#xff0c;美国空军正努力将自身转化为更强调协作性的组织。来源丨Forbes作者丨Kathleen Walch编译丨科技行者通过增加数据规模与相关素养提升&#xff0c;美国空军各部门及人员&#xff0c;将建立起更强的决策、战略、任务执行以及网络安全保障效率与能力。以…

android 查询wifi信息的类,Android 获取wifi信息

在androi中WIFI信息的获取可以通过系统提供的WIFI Service获取。WifiManager wifi_service (WifiManager)getSystemService(WIFI_SERVICE);WifiInfo wifiInfo wifi_service.getConnectionInfo();其中WifiInfo 中比较常用的信息有&#xff1a;/*info.getBSSID()&#xf…

bashsupport插件_如何用 bash-support 插件将 Vim 编辑器打造成编写 Bash 脚本的 IDE

IDE(集成开发环境)就是这样一个软件&#xff0c;它为了最大化程序员生产效率&#xff0c;提供了很多编程所需的设施和组件。 IDE 将所有开发工作集中到一个程序中&#xff0c;使得程序员可以编写、修改、编译、部署以及调试程序。在这篇文章中&#xff0c;我们会介绍如何通过使…

java--自动装箱,拆箱

自动装箱&#xff1a;把基本类型转换为包装类类型 自动拆箱&#xff1a;把包装类类型转换为基本类型 之前无法自动装箱时&#xff1a; public static void main(String[] args) { int x 100; Integer i1 new Integer(x); //将基本数据类型包装成对象&#xff0c;装箱 int…

数字孪生:如何撑起一个万亿市场的产业变革?

来源&#xff1a; 脑极体 今天我们介绍一个在产业界如火如荼&#xff0c;但大众还非常陌生的概念&#xff1a;数字孪生&#xff08;Digital Twin&#xff09;。在解释这一晦涩难懂的概念前&#xff0c;我首先想到了一个人&#xff0c;前苏联著名的昆虫学家、数学家和哲学家——…

二、python框架相关知识体系

Django框架 1、django框架、flask框架和Tornado框架的区别&#xff1f; django框架&#xff0c;内置组件多&#xff0c;自身功能强大&#xff0c;是一个大而全的框架&#xff0c;ORM、Admin、中间件、Form、ModelFrom、信号、缓存、csrf等flask框架&#xff0c;内置组件少&…