hdu 4519(数学题)

郑厂长系列故事——体检

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

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

如果n<=m那么我们只需要k分钟就可以体检完。但是不会比k分钟少,因为一个人不能同时对应多个医生。

其余情况总共需要n*k分钟,那么总共需要n*k/m分钟.

///总共需要n*k分钟,所以m个医生总共需要n*k/m分钟
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;

int main()
{
    int tcase;
    scanf("%d",&tcase);
    while(tcase--)
    {
        int n,k,m;
        scanf("%d%d%d",&n,&k,&m);
        if(n<=m) printf("%d\n",k);
        else
        {
            int all = n*k;
            if(all%m==0) printf("%d\n",all/m);
            else printf("%d\n",all/m+1);
        }
    }
    return 0;
}
时间: 2024-10-10 23:35:31

hdu 4519(数学题)的相关文章

HDU 5073 数学题

题目传送门 http://acm.hdu.edu.cn/showproblem.php?pid=5073 这道题RE了好多发啊囧,RE到精神不振. Galaxy的质心并不是一成不变的,随着一些星球的移动而变化,最终质心就变成了坐标和的平均值了. 具体思路如右http://mathlover.info/archives/hdu5073 代码就补贴了囧...

hdu 5065 数学题

#include<iostream> #include<cmath> #include<cstdio> using namespace std; int A,B,y; double ans=0; double inline f(double x) { return A*x*x-(B*sin(x)+y); } double inline absf(double x) { if(f(x)<0)return -f(x); return f(x); } bool find

HDU 1030 数学题

给出两点,求这两点在图上的最短路径 分别以最上,左下,右下为顶点,看这个三角图形 ans=这三种情况下两点的层数差 #include "stdio.h" #include "string.h" #include "math.h" int main() { int n,m,sn,sm,rn,rm,ln,lm,ans; while (scanf("%d%d",&n,&m)!=EOF) { sn=sqrt(n); i

hdu 5241 数学题= =

题意:balabala 题意里给出了好多集合之间的关系,一开始以为要用离散一步一步推什么的... [然而其实并没有什么卵用 对于每一种语言来说,这种语言谁会谁不会是的方案数一定,而且语言之间相互独立的,互相之间通过乘法原理来计算方案数,这样就一定是某一个数的n次方啦~ 由sample data知,答案为32^n 用java写能偷懒[逃 1 import java.io.*; 2 import java.math.*; 3 import java.util.*; 4 public class Ma

hdu 1030 数学题加观察

#include <cstdio> #include <iostream> #include <algorithm> #include <queue> #include <cmath> #include <cstring> #include <stack> #include <set> #include <map> #include <vector> using namespace st

HDU 4519

实现简单,但不得不说是一道好题. 当员工数少于医生数时,直接输出K,因为此时N个员工同时检查,必定是最少的时间了. 当员工数大于医生数时,可以把员工的项目看成一段一段的,每个医生对其进行切割,总能得到时间不冲突的情情况. #include <iostream> #include <cstdio> using namespace std; int main(){ int T,n,k,m; scanf("%d",&T); while(T--){ scanf(

hdu 4974 A simple water problem(数学题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4974 Problem Description Dragon is watching competitions on TV. Every competition is held between two competitors, and surely Dragon's favorite. After each competition he will give a score of either 0 or

hdu 4956 Poor Hanamichi BestCoder Round #5(数学题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4956 Poor Hanamichi Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7    Accepted Submission(s): 4 Problem Description Hanamichi is taking part in

hdu 1012:u Calculate e(数学题,水题)

u Calculate e Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 28686    Accepted Submission(s): 12762 Problem Description A simple mathematical formula for e iswhere n is allowed to go to infinit