zoukankan      html  css  js  c++  java
  • 题解报告:hdu 4907 Task schedule

    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
    解题思路:题意说得很清楚了,注意m个询问之间是无关的。做法:预处理打表O(n),O(1)的询问,从后往前暴力枚举,如果当前时间点i没有被占用,那么就设置now为i,并且每次将时间点b[i]设置成now,表示目前在i时间有另外的任务请求对应需要在now这个时间点才被执行。
    AC代码:
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int maxn=200005;
     4 int t,n,m,x,q,now,b[maxn];bool a[maxn];
     5 int main(){
     6     while(~scanf("%d",&t)){
     7         while(t--){
     8             scanf("%d%d",&n,&m);
     9             memset(a,false,sizeof(a));
    10             memset(b,0,sizeof(b));
    11             for(int i=1;i<=n;++i){scanf("%d",&x);a[x]=true;}
    12             for(int i=maxn-5;i>0;--i){//从后往前枚举,如果该时间点没有占用,则直接用now这个时间
    13                 if(!a[i])now=i;//更换没有占用的最小时间
    14                 b[i]=now;//每一个任务只能延迟做
    15             }
    16             while(m--){
    17                scanf("%d",&q);
    18                printf("%d
    ",b[q]);
    19             }
    20         }
    21     }
    22     return 0;
    23 }
  • 相关阅读:
    JeePlus:代码生成器
    JeePlus:API工具
    Java实现 洛谷 P1023 税收与补贴问题
    Java实现 洛谷 P1023 税收与补贴问题
    Java实现 洛谷 P1023 税收与补贴问题
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
  • 原文地址:https://www.cnblogs.com/acgoto/p/9508837.html
Copyright © 2011-2022 走看看