C - Task schedule-二分
来源:互联网 发布:手机开核软件 编辑:程序博客网 时间:2024/05/18 03:42
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=52405
有一台机器,并且给你这台机器的工作表,工作表上有n个任务,机器在ti时间执行第i个任务,1秒即可完成1个任务。
有m个询问,每个询问有一个数字q,表示如果在q时间有一个工作表之外的任务请求,请计算何时这个任务才能被执行。
机器总是按照工作表执行,当机器空闲时立即执行工作表之外的任务请求。
思路:输入的时候把所有用过的时间标记一下
再for一遍把没占用的时间都存到一个数组
然后每次 请求 用二分找到 》那个请求时间的第一个数
如果找到的数大于最大的已占用时间,直接输出那个数
#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <algorithm>#include <iostream>#include <queue>#include <map>#include <set>#include <vector>using namespace std; int nm[200000+5];int vis[200000+5];int zuobiao[200000+5];int main(){int t;cin>>t;while(t--){int tmp;memset(vis,0,sizeof(vis));int n,m;cin>>n>>m;int i,j;int max=0;for (i=1;i<=n;i++){scanf("%d",&tmp);vis[tmp]=1;if (tmp>max)max=tmp;}int ok=0;for (i=1;i<=max+1;i++){if (vis[i]==0)zuobiao[++ok]=i;} int last=1;for (i=1;i<=m;i++){scanf("%d",&nm[i]);} for (i=1;i<=m;i++){if (nm[i]>max) {printf("%d\n",nm[i]);continue;} int tt= lower_bound(zuobiao+1,zuobiao+1+ok, nm[i])-&zuobiao[1]+1 ; printf("%d\n",zuobiao[tt]); } } return 0;}
0 0
- C - Task schedule-二分
- hdu 4907 Task schedule(二分)
- hdu 4902 Task schedule(二分查找)
- HDU 4907 Task Schedule (Hash + 二分)
- hdu 4907 Task schedule(二分查找)
- HDU 4907 Task schedule (二分)
- HDU 4907 Task schedule(二分算法)
- Task Schedule
- Task Schedule
- Task Schedule
- Task schedule
- Task schedule
- Task schedule
- Task Schedule
- Task schedule
- task schedule
- Task schedule
- HDU-4907-Task schedule【二分】/【哈希算法】
- 前端性能之js代码优化点
- linux编译警告信息
- HDU 3635--Dragon Balls【并查集,有技巧】
- MapRed编程自定义Partitioner
- Xcode6 有关Unknown type name ’UIImage‘问题的解决办法
- C - Task schedule-二分
- scala学习笔记(2)
- python编程基础操作(1)—— list
- (九十八)通讯录的访问和修改
- 我跟敏捷开发的故事--三面墙
- 云存储基础架构剖析
- 老菜鸟致青春,程序员应该选择java 还是 c#
- HLSL效果框架实例之高斯模糊
- HDU 4521 小明系列问题――小明序列 (DP)