有一台机器,并且给你这台机器的工作表,工作表上有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 <= 502. 1 <= n, m <= 10^53. 1 <= ti <= 2*10^5, 1 <= i <= n4. 1 <= q <= 2*10^5 Ou

include

include

typedef long long ll;
using namespace std;
const int maxn2=2e5+10;
int has[maxn2];
int te[maxn2];

include

int main()
{

int t;
scanf("%d",&t);
while(t--){
    int n,m;
    memset(has,0,sizeof(has));
    scanf("%d%d",&n,&m);
    for(int i=0;i<n;i++){
        int j;
        scanf("%d",&j);
        has[j]++;    //hash标记预处理
    }
    int x=maxn2;
    for(int i=maxn2-1;i>0;i--){    //关键代码。从后往前,因为时间是往后走的取最小。te数组相当于记录当前i值的下一个未被标记的时间是多少,比如样例,3和5之间4为空闲,i=2时,很明显,

                         //2本身以及3都被标记了,下一个空闲时间是4所以tr[2]=4,tr[3]=4;通过打表可以看出,就这么个操作。如果 hash==0,tr就记录本身的i

        if(has[i]){            //x==maxn2是根据数据范围进行的操作
            te[i]=x;
        }
        else{
            te[i]=i;
            x=i;
        }
    }
    while(m--)
    {
        int x;
        scanf("%d",&x);
        printf("%d\n",te[x]);
    }
}
return 0;

}

目录
相关文章
|
2月前
|
自然语言处理 自动驾驶 机器人
机器自动话
机器自动话
37 1
|
21天前
3操作工作表
3操作工作表
|
2月前
|
存储 缓存 Java
揭秘计算机指令执行的神秘过程:CPU内部的绝密操作
本文介绍了计算机指令和CPU如何执行指令。它解释了计算机指令可以被视为CPU所理解的语言,不同的CPU支持不同的指令集。文中重点介绍了MIPS指令集作为示例。同时,还描述了CPU的内部处理过程,包括控制单元、算术逻辑单元和数据单元。文章最后讨论了CPU和内存之间通过地址和数据总线进行的数据传输。
126 1
|
2月前
|
监控 DataWorks 调度
调度任务的责任人如果已经不在该项目空间了,调度任务可否正常运行?
调度任务的责任人如果已经不在该项目空间了,调度任务可否正常运行?
41 0
|
BI
ZMRP(SAP生产机强制修改代码)(慎用!!!)
SAP强制修改自开发报表代码
105 0
|
数据库
LeetCode(数据库)- 每台机器的进程平均运行时间
LeetCode(数据库)- 每台机器的进程平均运行时间
505 0
LeetCode(数据库)- 每台机器的进程平均运行时间
|
Shell 网络安全 数据安全/隐私保护
服务器空间爆满的检查及处理方法
首先必须使用 ssh 工具连接服务器,在 windows 环境下推荐使用:SecureCRT 使用下面命令进行登录: ssh root@服务器IP地址 链接之后会提示输入密码,密码不可见,使用键盘输入完之后直接按回车。
1077 0

热门文章

最新文章