杭电 4907 Task schedule ·
2024-08-28 08:20:11
Description
有一台机器,并且给你这台机器的工作表,工作表上有n个任务,机器在ti时间执行第i个任务,1秒即可完成1个任务。
有m个询问,每个询问有一个数字q,表示如果在q时间有一个工作表之外的任务请求,请计算何时这个任务才能被执行。
机器总是按照工作表执行,当机器空闲时立即执行工作表之外的任务请求。
有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
#include<cstdio>
#define M 200000
int n,m,f[M+],c;
int g(int c)
{
if(c != f[c])
{
f[c]=g(f[c]); //g(c+1) 会超时
}
return f[c];
}
int main()
{ int t;
scanf("%d",&t);
while(t--)
{
for(int i = ; i < M ; i++)
{
f[i]=i;
}
scanf("%d %d",&n,&m);
while(n--)
{
scanf("%d",&c);
f[c]=c+;
}
while(m--)
{
scanf("%d",&c);
printf("%d\n",g(c));
}
}
}
最新文章
- AngularJS2 + ASP.NET MVC项目
- 更换win7锁屏壁纸
- Object Pascal 语言基础
- android125 zhihuibeijing 缓存
- cygwin编译SDL1.2
- jQuery获取、设置title的值
- C++中加const与不加const的区别
- window响应拖拽文件操作
- 关于Jaccard相似度在竞品分析中的一点思考
- spring cloud config svn仓库配置
- Hdoj 1008.Elevator 题解
- java先导课程学习总结
- Delphi基础必记-快捷键
- jetty 插件启动指定端口号
- Linux内核分析第三周学习笔记
- cygwin完全安装步骤方法(过程图解)
- Erlang:Error in process ... with exit value
- pygame学习笔记(4)——声音
- Guava Files 源码分析(一)
- filebeat配置不同路径下的log的两种方法
热门文章
- github最值得收藏的Bootstrap3后台管理框架
- C++ 的浅拷贝和深拷贝(结构体)
- BFS Codeforces Round #297 (Div. 2) D. Arthur and Walls
- h5-18-文件操作-兼容判断
- (022)[工具软件]图片浏览 JPEGView
- HBase表结构设计--练习篇
- 动手实现 React-redux(三):connect 和 mapStateToProps
- C# 修改DataTable 列的 DataType
- Spring boot Jpa添加对象字段使用数据库默认值
- DOCTYPE详解