[BestCoder Round #3] hdu 4907 Task schedule (模拟简单题)
Task schedule
有m个询问,每一个询问有一个数字q。表示假设在q时间有一个工作表之外的任务请求,请计算何时这个任务才干被运行。
机器总是依照工作表运行,当机器空暇时马上运行工作表之外的任务请求。
对于每组測试数据:
第一行是两个数字n, m,表示工作表里面有n个任务, 有m个询问。
第二行是n个不同的数字t1, t2, t3....tn,表示机器在ti时间运行第i个任务。
接下来m行,每一行有一个数字q,表示在q时间有一个工作表之外的任务请求。
特别提醒:m个询问之间是无关的。
[Technical Specification]
1. T <= 50
2. 1 <= n, m <= 10^5
3. 1 <= ti <= 2*10^5, 1 <= i <= n
4. 1 <= q <= 2*10^5
1
5 5
1 2 3 5 6
1
2
3
4
5
4
4
4
4
7
解题思路:
一開始想的是假设当前时间没有被占用,时间输出当前时间,假设被占用,就向后查找。知道找到空暇时间为止,但这是超时的.....每次询问都要向后查找,并且询问的次数又那么多,肯定不行。后来打表预处理一下。把每一个时间的任务的空暇时间预先处理。这样查询的时候就O(1)了。
代码:
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
const int maxn=1e5+5;
bool hash[maxn*2];
int f[maxn*2];
int T,n,m,ti,q; void prepare()
{
int cur=maxn*2;//始终是空暇时间
for(int i=maxn*2;i>=1;i--)
{
if(hash[i]==0)
cur=i;
f[i]=cur;
}
} int main()
{
scanf("%d",&T);
while(T--)
{
memset(hash,0,sizeof(hash));
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&ti);
hash[ti]=1;
}
prepare();
for(int i=1;i<=m;i++)
{
scanf("%d",&q);
printf("%d\n",f[q]);
}
}
return 0;
}
[BestCoder Round #3] hdu 4907 Task schedule (模拟简单题)的更多相关文章
- HDU 4907 Task schedule
		对于询问q 假设q不存在直接输出q 否则输出后面第一个不存在的数 从2*10^5到1遍历一边ac #include<bits/stdc++.h> using namespace std; ... 
- 题解报告:hdu 4907 Task schedule
		Problem Description 有一台机器,并且给你这台机器的工作表,工作表上有n个任务,机器在ti时间执行第i个任务,1秒即可完成1个任务.有m个询问,每个询问有一个数字q,表示如果在q时间 ... 
- HDU 3572 Task Schedule(拆点+最大流dinic)
		Task Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ... 
- HDU 3572 Task Schedule (最大流)
		C - Task Schedule Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ... 
- Bestcoder round #65 && hdu 5593 ZYB's Tree 树形dp
		Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submissio ... 
- Bestcoder round #65 && hdu 5592 ZYB's Premutation 线段树
		Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submissio ... 
- hdu 3572 Task Schedule
		Task Schedule 题意:有N个任务,M台机器.每一个任务给S,P,E分别表示该任务的(最早开始)开始时间,持续时间和(最晚)结束时间:问每一个任务是否能在预定的时间区间内完成: 注:每一个任 ... 
- hdu 3572 Task Schedule (dinic算法)
		pid=3572">Task Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ... 
- hdu 3572 Task Schedule(最大流&&建图经典&&dinic)
		Task Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ... 
随机推荐
- Flex 布局 (两个div居中自适应 宽度变小变一列,宽度够就是两列)
			https://www.runoob.com/w3cnote/flex-grammar.html display: flex; justify-content: center; align-items ... 
- MySQL系列(一)--数据类型
			如何选择优化的数据类型: 1.通常更小的更好 相同级别的数据类型,选择占据空间更小的数据类型.更小的数据类型通常更快,因为占用更少的磁盘.内存和CPU缓存,处理时需要的 CPU周期也更少,但是要确保需 ... 
- 第2节 hive基本操作:12、hive当中的hql语法
			3.2. hive查询语法 3.2.1.SELECT https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select 基本 ... 
- 利用jQuery对li标签操作
			<ul class="con" id="products"> <li i=" class=""> < ... 
- TCP的链接过程
			** TCP 三次握手 四次挥手** 客户端 服务器端 交互的模式 ---> 应答模式* 应答模式 ---> 客户端发起请求 服务器端回应请求** 客户端先去发起请求 ---> 查看 ... 
- 51nod 1057 n的阶乘 (压位优化)
			题目地址:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1057&judgeId=605203 使用压位进行优化, ... 
- 1257 背包问题 V3(二分)
			1257 背包问题 V3 3 秒 131,072 KB 80 分 5 级题 题意 : 从n个物品中选出k个,使单位体积价值最大 思路: 一开始正面想,试过很多种,排序什么的..总是结果不对,最后想到二 ... 
- UML系统建模学习
			什么是UML系统建模 UML系统建模是一种与面向对象软件开发密切相关的建模方法.通过建造模型可以验证建造事物的可行性.UML是一种统一建模语言,它的全称是(Unified Method Languag ... 
- Dash Speed
			题目大意: 比特山是比特镇的飙车圣地.在比特山上一共有n 个广场,编号依次为1 到n,这些广场之间通过n - 1 条双向车道直接或间接地连接在一起,形成了一棵树的结构.因为每条车道的修建时间以及建筑材 ... 
- 零基础入门学习Python(14)--字符串:各种奇葩的内置方法
			前言 这节课我们回过头来,再谈一下字符串,或许我们现在再来谈字符串,有些朋友可能觉得没必要了,甚至有些朋友就会觉得,不就是字符串吗,哥闭着眼也能写出来,那其实关于字符串还有很多你不知道的秘密哦.由于字 ... 
