• 郑厂长系列故事——体检(hdu 4519)


    郑厂长系列故事——体检

    Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
    Total Submission(s): 1300    Accepted Submission(s): 717


    Problem Description
      郑厂长不是正厂长
      也不是副厂长
      他根本就不是厂长
      只是公司的一个码农
      
      郑厂长所在的腾讯公司每一年都要组织员工体检,比如量身高体重、测血压之类的,今年也不例外。
      这次总共有N位员工接受体检,并且每个员工都需要做K个项目的检查才算完成整个体检的流程。现在来了M个医生为员工做身体检查,并且每一位医生都带齐了检查这K个项目的器材来(也就是说每个医生都能进行这K个项目中的任意一项检查)。
      体检的详细流程是这样的:
      公司事先制定好了M份体检单,每个医生手上都各自拿到一份体检单,上面已经安排好了检查的次序,以及每一次检查所对应的员工和项目。每个医生按照体检单上的次序为相应的员工做相应的项目检查。医生拿到的体检单上的名单也可以是空的,就是这个医生不需要检查任何员工的任何项目。
      当然,制定出的这M份体检单不能有问题存在,否则就会有混乱的情况发生。按照常理来说,同一个医生在同一时间只能为一个员工做一个项目的检查。另外,同一个员工在同一时间也只能进行一个项目的检查,当然,不同的医生或不同的员工可以在同一时间进行项目检查。现在假设每个员工的每个项目的检查时间都是一分钟(其它时间花费忽略不计,只考虑项目检查工作所花费的一分钟)。
      公司希望体检的工作越快完成越好,由于郑厂长大学期间曾经是一个ACMer,所以公司就将体检的安排工作交给了他,他需要计算出最快需要多少分钟能完成所有员工的体检工作。
     
    Input
    输入的第一行为一个正整数T,表示有T组测试数据;
    接下去有T组测试数据,每组测试数据占一行,包含三个整数N,K,M,N表示员工的人数,K表示体检的项目数,M表示医生的人数。

    [Technical Specification]
    T<=1000
    1<=N<=100
    1<=K<=10
    1<=M<=100
     
    Output
    对于每组数据,输出一个整数,表示最快需要多少分钟才能完成所有员工的体检工作。
     
    Sample Input
    2 2 1 1 3 2 2
     
    Sample Output
    2 3
    Hint
    对于第二组数据体检单的安排可以是如下情况: 第1个医生的体检单:员工A的项目1、员工A的项目2、员工B的项目2; 第2个医生的体检单:员工B的项目1、员工C的项目1、员工C的项目2。 第一分钟:第1个医生检查员工A的项目1,而第2个医生检查员工B的项目1; 第二分钟:第1个医生检查员工A的项目2,而第2个医生检查员工C的项目1; 第三分钟:第1个医生检查员工B的项目2,而第2个医生检查员工C的项目2; 这样就只需要3分钟即可完成体检工作。
     
    Source
     
    Recommend
    liuyiding   |   We have carefully selected several similar problems for you:  5609 5608 5607 5605 5604 
    思路:如果人数比医生人数少,那么所用时间就是所要体检的项目数。
    如果人数大于等于医生人数那么时间就是项目数乘人数/医生人数向上取整
     1 #include<stdio.h>
     2 #include<algorithm>
     3 #include<iostream>
     4 #include<string.h>
     5 #include<math.h>
     6 #include<queue>
     7 #include<string.h>
     8 #include<stack>
     9 #include<vector>
    10 #include<map>
    11 #define sc(x) scanf("%I64d",&x)
    12 #define pr(x) printf("%I64d",x)
    13 #define prr(x) printf("%I64d
    ",x)
    14 #define prrr(x) printf(" %I64d",x)
    15 #define FOR(i,p,q) for(int i=p;i<=q;i++)
    16 const int NN=9937;
    17 using namespace std;
    18 int a[101][5][5];
    19 int main(void)
    20 {
    21     int n,i,j,k,p,q;
    22     scanf("%d",&k);
    23     while(k--)
    24     {
    25         scanf("%d %d %d",&n,&p,&q);
    26         if(n<=q)
    27             printf("%d
    ",p);
    28         else
    29         {
    30             int z=n*p;
    31             int kk=z/q;
    32             if(z%q!=0)
    33             {
    34                 kk++;
    35             }
    36             printf("%d
    ",kk);
    37         }
    38     }
    39     return 0;
    40 }
    油!油!you@
  • 相关阅读:
    开发3dMax插件的方法和应用
    实现X*N
    fork与vfork的区别
    使用递归算法写一段程序
    宏和函数的区别
    多线程学习(一)
    [算法天天练]堆排序
    [转][算法天天练]堆与堆排序
    [转]快速排序 挖坑讲解方法
    [算法天天练]选择排序法
  • 原文地址:https://www.cnblogs.com/zzuli2sjy/p/5145682.html
Copyright © 2020-2023  润新知