牛客网题目:招聘(C语言)

招聘 | 时间限制:1 秒 | 内存限制:262144K | 语言限制:不限
某公司组织一场公开招聘活动,假设由于人数和场地的限制,每人每次面试的时长不等,并
已经安排给定,用(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 名面试官。

示例4(本人所加的例子)

输入

4

4

1 2

2 4

3 4

2 3

输出

2

说明

4场面试,一个面试官面两场,至少需一名面试官,【3,4】和【2,4】重叠,【2,3】也和【2,4】重叠但是【2,3】和【3,4】不重叠,所以需两名面试官。

代码如下:

********************************************代码分界线**********************************************

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include <stdio.h>
#include<math.h>
void main()
{
    int m,n,time[500][2];
    scanf("%d", &m);
    scanf("%d", &n);
    int i,j;
    for (i = 0; i < n; i++)
        for (j = 0; j < 2; j++)
        {
            scanf("%d", &time[i][j]);
        }
    int max1 = n / m;
    if (n % m != 0)
        max1++;
    int judge[100][10];
    int judge2[10],k,max2=0;
    for(i=0;i<100;i++)
        for (j = 0; j < 10; j++)
        {
            judge[i][j] = -1;
            judge2[j] = 0;
    }
    for (i = 0; i < n; i++)
    {
        j = 0;
        k = 0;
        while (judge[j][k] != -1)
        {
            if ((time[i][0] < time[judge[j][k]][0] && time[i][1] <= time[judge[j][k]][0]) || (time[i][0] >= time[judge[j][k]][1] && time[i][1] > time[judge[j][k]][1]))
                k++;
            else
            {
                j++;
        
                k = 0;
            }
            if (k == m)
            {
                k = 0;
                j++;
            }
        }
    
        judge[j][k] = i;
        judge2[j]++;

    }

    for (i = 0; judge2[i]!=0; i++)
    {

    }
    max2 = i;
    printf("%d", max1 > max2 ? max1 : max2);
}

********************************************代码分界线**********************************************

其中judge是存放面试官对应的面试编号,一维是面试官编号,二位是面试编号(即judge[i][j])

judge2是指对应的面试官目前接手的面试数量。(如judge2[0]=3,指的就是0号面试官目前已经接手3个面试)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值