[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 ...
随机推荐
- C#根據當前DataGridView查詢數據導出Excel
private void btnsuggestinfo_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.C ...
- USB设备请求命令详解
USB设备请求命令 :bmRequestType + bRequest + wValue + wIndex + wLength 编号 值 名称 (0) 0 GET_STATUS:用来返回特定接收者 ...
- CAD设置超链接(网页版)
超链接(Hyperlink)可以看做是一个“热点”,它可以从当前Web页定义的位置跳转到其他位置. 设置对象动态提示事件回调函数. //设置对象动态提示事件回调函数 function DoInputP ...
- Java IO(一)--File类
File类不是单指文件,它既可以代表一个文件名称,又可以代表一个目录下的一组文件.可以用来创建.删除.遍历文件等 public static void main(String[] args) { St ...
- sklearn.metrics.roc_curve
官方网址:http://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics 首先认识单词:metrics: ['mɛ ...
- Linux C动态链接库实现一个插件例子
实现一个简单的计算动态链接库:升级动态链接库后,在不重新编译主程序的情况下,直接生效. lib库: #cat math.c #include <stdio.h> int add(int x ...
- TX-LCN事务控制原理
TX-LCN由两大模块组成, TxClient.TxManager,TxClient作为模块的依赖框架,提供TX-LCN的标准支持,TxManager作为分布式事务的控制方.事务发起方或者参与方都由T ...
- Java中this、static关键字的内存图解
Java中的关键字有很多,abstract default goto* null switch boolean do if package nchronzed break dou ...
- Linux 内核框架图
- CSU 2018年12月月赛 F(2218): Finding prime numbers
Description xrdog has a number set. There are 95 numbers in this set. They all have something in com ...