HDU4907-Task schedule

2024-05-11 03:32
文章标签 schedule task hdu4907

本文主要是介绍HDU4907-Task schedule,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Task schedule

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 586    Accepted Submission(s): 292


Problem Description
有一台机器,并且给你这台机器的工作表,工作表上有n个任务,机器在ti时间执行第i个任务,1秒即可完成1个任务。
有m个询问,每个询问有一个数字q,表示如果在q时间有一个工作表之外的任务请求,请计算何时这个任务才能被执行。
机器总是按照工作表执行,当机器空闲时立即执行工作表之外的任务请求。

Input
输入的第一行包含一个整数T, 表示一共有T组测试数据。

对于每组测试数据:
第一行是两个数字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

Output
对于每一个询问,请计算并输出该任务何时才能被执行,每个询问输出一行。

Sample Input
  
1 5 5 1 2 3 5 6 1 2 3 4 5

Sample Output
  
4 4 4 4 7

Source
BestCoder Round #3

Recommend
We have carefully selected several similar problems for you:   4910  4909  4908  4906  4904 
//AC代码
/*
此题暴力基本没戏
所以先枚举出空闲时间,再二分
*/
#include<iostream>
#include<queue>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iomanip>
#include<map>
#include<cstdlib>
#include<cmath>
#include<vector>
#define LL long long
#define IT __int64
#define zero(x) fabs(x)<eps
#define mm(a,b) memset(a,b,sizeof(a))
const int INF=0x7fffffff;
const double inf=1e8;
const double eps=1e-10;
const double PI=acos(-1.0);
const int Max=200001;
using namespace std;
int s[Max];
int t[Max];
int sign(double x)
{
return (x>eps)-(x<-eps);
}
int main()
{
int n,m,i,j,q,p,res,k;
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
for(i=1;i<=Max;i++)
{
s[i]=0;
}
for(i=1;i<=n;i++)
{
scanf("%d",&q);
s[q]=1;
}
k=0;
for(i=1;i<=Max;i++)
{
if(s[i]==0)
t[++k]=i;
}
sort(t+1,t+(k+1));
//cout<<t[1]<<" "<<t[2]<<endl;
while(m--)
{
scanf("%d",&p);
if(s[p]==0)
printf("%d\n",p);
else
{
int left=1;
int right=k;
while(left<right)
{
int mid=(left+right)>>1;
//cout<<left<<" "<<right<<" "<<mid<<endl;
if(p<t[mid])
{
res=t[mid];
right=mid-1;
if(p<t[right])
res=t[right];
}
else
{
left=mid+1;
if(p<t[left])
res=t[left];
}
}
printf("%d\n",res);
}
}
}
return 0;
}

这篇关于HDU4907-Task schedule的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/978383

相关文章

C# Task Cancellation使用总结

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延... 目录C# Task Cancellation总结1、调用cancellationTokenSource.

兔子--Android Studio出现错误:Error:Execution failed for task ':myapp:dexDebug'. com.android.ide.common.pro

重点在:finished with non-zero exit value 2. 这里表明了有重复的内容存在。 由于:Android Studio中引入包的方式有如下2种:    compile 'com.android.support:support-v4:22.0.0'    compile files('libs/support-v

深入理解.NET 中的 Task 和 Task.WhenAll

一、Task 的原理         Task 代表一个异步操作。它允许你在不阻塞主线程的情况下执行耗时的操作,如文件读取、网络请求等。 异步执行 当你调用一个异步方法时,它会立即返回一个 Task 对象。这个 Task 对象表示正在进行的异步操作。异步方法会在后台线程上执行,而不会阻塞调用它的线程。例如,使用 Task.Run(() => { /* 耗时操作 */ }); 可以在一个新的线

Linux的进程,线程以及调度(fork与僵尸,内存泄漏,task结构体,停止状态与作业控制)

1.Linux进程生命周期(就绪、运行、睡眠、停止、僵死) 2.僵尸是个什么鬼? 3.停止状态与作业控制,cpulimit 4.内存泄漏的真实含义 5.task_struct以及task_

swoole http服务器task投递异步任务

官网的task案例代码是在tcp服务器中写的,本人在想,http服务器也是server服务器中的一种,应该也可以投递task任务。 一个简单的http服务器代码:    $server = new Swoole\Http\Server('127.0.0.1',8888);$server->on('request',function($request, $response) use($serv

Linux操作系统学习笔记(五)进程的核心——task_truct

一. 前言   在前文中,我们分析了内核启动的整个过程以及系统调用的过程,从本文开始我们会介绍Linux系统各个重要的组成部分。这一切就从进程和线程开始,在 Linux 里面,无论是进程,还是线程,到了内核里面,我们统一都叫任务(Task),由一个统一的结构 task_struct 进行管理。这个结构非常复杂,本文将细细分析task_struct结构。主要分析顺序会按照该架构体中的成员变量和函数

ZOJ 3430 Pizza schedule

题意: 给你一串编码后的单词和一篇文章  问  编码前文章中出现了几个单词 思路: 根据题意反编码  然后AC自动机跑一下 转化字符时候注意长度  因为可能转换出'\0'  所以转完后再求strlen会出错 注意  ZOJ的char默认是signed char  所以转码后要么存在unsigned char数组里  要么用int数组存  否则会错的!!  因为signed char

transformer之预训练task小析(五)

上接transformer预训练task之小析(四)      首先思考一个问题,怎么表示掌握了一门语言?      最好的方式可能体现在遣词造句上吧,比如饱受诟病的八股文上有很多的旷世奇作[1],比如很多读起来朗朗上口的👇 天对地,雨对风。大陆对长空。山花对海树,赤日对苍穹。雷隐隐,雾蒙蒙。日下对天中。风高秋月白,雨霁晚霞红。牛女二星河左右,参商两曜斗西东。十月塞边,飒飒寒霜惊

HDU1150/POJ1325_Machine Schedule(二分图/最小点覆盖=最大匹配)

解题报告 http://blog.csdn.net/juncoder/article/details/38147135 题目传送门(POJ) 题目传送门(HDU) 题意: A机器有n个模式,B机器有m个模式,每个作业可以在任何机器的特定模式下工作,转换模式需要耗时,求最小耗时 思路: 把AB两机器的模式当成二分图顶点,模式之间的连线就是某个作业可以在该两个模式下工作,就转换成求最小

HDU3572_Task Schedule(网络流最大流)

解题报告 题意: 工厂有m台机器,需要做n个任务。对于一个任务i,你需要花费一个机器Pi天,而且,开始做这个任务的时间要>=Si,完成这个任务的时间<=Ei。对于一个任务,只能由一个机器来完成,一个机器同一时间只能做一个任务。但是,一个任务可以分成几段不连续的时间来完成。问,能否做完全部任务。 思路: 网络流在于建模,这题建模方式是: 把每一天和每个任务看做点。由源点到每一任务,建容量