hdu-4519-二分-郑厂长系列故事——体检
2013-05-09 13:24
316 查看
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=4519
题目大意:
有n个人体检,每个人要检查k个项目,有m个医生,每个医生检查每个人的一个项目需要花费1分钟,问你检查完所有的人最少需要花费多长时间。要求:每个医生每次只能检查一个人的一个项目,每个人同一分钟只能接受一个医生检查一个项目。
解题思路:
很容易想到二分。
每个人都有k个项目,显然最小的时间为k分钟,如果比k小的话,肯定存在同一分钟有一个人检查了超过两个项目,不和题意。
考虑最坏的情况,只有一个医生的话,需要花费n*k分钟。
然后对于第一个医生,可以这样构造,他的mid分钟一次检查a11,a12,a13,,,,,a1k然后a2(k+1).....a2mid,如此类推。这样可以把每个医生的就诊单序列给出来。当然每个人的检查项目的数量也可以不同。
详见代码:
http://acm.hdu.edu.cn/showproblem.php?pid=4519
题目大意:
有n个人体检,每个人要检查k个项目,有m个医生,每个医生检查每个人的一个项目需要花费1分钟,问你检查完所有的人最少需要花费多长时间。要求:每个医生每次只能检查一个人的一个项目,每个人同一分钟只能接受一个医生检查一个项目。
解题思路:
很容易想到二分。
每个人都有k个项目,显然最小的时间为k分钟,如果比k小的话,肯定存在同一分钟有一个人检查了超过两个项目,不和题意。
考虑最坏的情况,只有一个医生的话,需要花费n*k分钟。
然后对于第一个医生,可以这样构造,他的mid分钟一次检查a11,a12,a13,,,,,a1k然后a2(k+1).....a2mid,如此类推。这样可以把每个医生的就诊单序列给出来。当然每个人的检查项目的数量也可以不同。
详见代码:
#include<iostream> #include<cmath> #include<cstdio> #include<cstdlib> #include<string> #include<cstring> #include<algorithm> #include<vector> #include<map> #include<stack> #include<list> #include<queue> #define eps 1e-6 #define INF (1<<30) #define PI acos(-1.0) using namespace std; int main() { int t,n,k,m; scanf("%d",&t); while(t--) { scanf("%d%d%d",&n,&k,&m); int left=k,right=n*k,mid,ans; while(left<=right) { mid=(left+right)/2; if(mid*m>=n*k) //这个时间的话,可以检查完所有的病人 { ans=mid; right=mid-1; } else left=mid+1; } printf("%d\n",ans); } return 0; }
相关文章推荐
- HDU----(4519)郑厂长系列故事——体检
- [HDU] 4519 郑厂长系列故事——体检
- 郑厂长系列故事——体检(hdu 4519)
- 郑厂长系列故事——体检(4519)
- hdu-4539-郑厂长系列故事――排兵布阵 状态压缩dp
- HDU4519:郑厂长系列故事——体检
- HDU 4529:郑厂长系列故事——N骑士问题(状压DP)
- HDU_4519 郑厂长系列故事——体检
- HDU-4539-郑厂长系列故事——排兵布阵
- hdu-4524-郑厂长系列故事——逃离迷宫-简单奇偶校检-java
- 2013腾讯编程马拉松初赛:郑厂长系列故事——体检
- HDU 4506 小明系列故事——师兄帮帮忙(二分快速幂)
- HDOJ-4519 郑厂长系列故事——体检
- hdu 4519 郑厂长系列故事——体检(贪心)
- hdu 4540 威威猫系列故事——打地鼠
- hdu 4512 吉哥系列故事——完美队形I(最长上升公共子序列)
- hdu 4539 郑厂长系列故事——排兵布阵 插头dp
- Hdu 4507 吉哥系列故事——恨7不成妻(求平方和的数位dp)
- HDU - 4507 吉哥系列故事――恨7不成妻 (数位DP,推公式啊)
- Hdu 4540 威威猫系列故事——打地鼠