华为面试题: 招聘

文章目录

题目

某公司组织一场公开招聘活动,假设由于人数和场地的限制,每人每次面试的时长不等,并已经安排给定,用 (S1, E1)、 (S2, E2)、 (Sj,Ej)…(Si < Ei ,均为非负整数 )表示每场面试的开始和结束时间。面试采用一对一的方式,即一名面试官同时只能面试一名应试者,一名面试官完成一次面试后可以立即进行下一场面试,且每个面试官的面试人次不超过 m 。

为了支撑招聘活动高效顺利进行,请你计算至少需要多少名面试官。

输入描述
输入的第一行为面试官的最多面试人次 m ,第二行为当天总的面试场次 n ,接下来的 n 行为
每场面试的起始时间和结束时间,起始时间和结束时间用空格分隔。 其中, 1 <= n, m <= 500

输出描述
输出一个整数,表示至少需要的面试官数量。

示例1

输入

2
5
1 2
2 3
3 4
4 5
5 6

输出

3

说明 :
总共有5 场面试,且面试时间都不重叠,但每个面试官最多只能面试 2 人次,所以需要 3 名面试官。

示例2
输入

3
3
1 2
2 3
3 4

输出

1

说明:
总共有3 场面试,面试时间都不重叠,每个面试官最多能面试 3 人次,所以只需要 1 名面试官。

示例3
输入

3
3
8 35
5 10
1 3

输出

2

说明:
总共有3 场面试【5,10】和 【8,35】 有重叠,所以至少需要 2 名面试官。

分析

首先进行一下排序,然后用一个大顶堆,维护当前每次面试的结束时间,
然后当一个新的时间安排出现的时候,只需要判断一下是否需要新的一个面试官,还是继续使用之前的会议室。

代码

#include<iostream>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;

int main(){
    int m,n;
    cin >> m >> n;
    vector<pair<int,int>> cap;
    for(int i = 0; i < n; ++i){
        int tmp1,tmp2;
        cin >> tmp1 >> tmp2;
        cap.push_back({tmp1,tmp2});
    }
    sort(cap.begin(),cap.end(),[](pair<int,int>&a, pair<int,int>&b){
        return a.first < b.first;
    });
    vector<priority_queue<int>> cap2(1);
    for(int i = 0; i < cap.size(); ++i){
        auto x = cap[i];
        priority_queue<int> tmp;
        int flag = 1;
        for(int i = 0; i < cap2.size(); ++i){
            if(cap2[i].empty() || cap2[i].top() <= x.first){
                cap2[i].push(x.second);
                flag = 0;
                break;
            }
        }
        if(flag){
            tmp.push(x.second);
            cap2.push_back(tmp);
        }
    }
    int ans = 0;
    for(int i = 0;i < cap2.size(); ++i){
        int tmp = cap2[i].size();
        ans += tmp % m ? (tmp / m + 1) : ( tmp / m );
    }
    cout << ans << endl;
    return 0;
}
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Java是一种面向对象的编程语言,而华为OD(Open Day)是华为举办的为期1-2天的校园招聘活动。在华为OD面试中,通常会有Java方面的问题。 面试者可能会被要求介绍Java的特点和优势,可以提到以下几点:首先,Java是跨平台的,可以在不同的操作系统上运行。其次,Java有丰富的类库和API,开发者可以借助这些工具提高开发效率。再次,Java具有良好的内存管理和垃圾回收机制,可以提高程序的性能和稳定性。此外,Java还有强大的多线程支持和安全性能,可以满足大规模企业级应用的需求。 除了Java的特点,面试者可能还会被要求回答一些具体的 Java 面试题。例如,可能会涉及基本的语法知识,如Java中的数据类型、循环结构、条件语句等等。还可能会涉及到Java的面向对象特性,如封装、继承、多态等。此外,还有可能会问到Java的异常处理、Java的I/O操作、Java集合框架等高级知识点。 在回答这些问题时,面试者应该清晰、简洁地表达自己的思路和观点,尽量避免模棱两可的回答。另外,面试者还可以结合自己的实际项目经验和编码能力,提供具体的案例或示例来支持自己的回答。在面试过程中,沟通能力和解决问题的能力也是重要的评判标准,所以面试者应该积极与面试官互动,展示自己的学习能力和团队合作能力。 总之,在Java华为OD面试中,面试者需要准备好Java基础知识,并能够根据问题灵活作答,展示自己的技术能力和潜力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四库全书的酷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值