• hdu4907 水dp 或者set


    题意:
          给你一些被占用的时间点,然后有一些询问,每次输出大于等于询问时间的没被占用的最小的那个时间。


    思路:

          直接把所有用过的时间标记上,然后倒着更新一遍当前最小空余时间,或者用set做,两个都在下面写代码了,水题不解释了,直接看看代码就懂了。

    #include<stdio.h>
    #include<string.h>
    
    #define N 200000 + 10
    
    int dp[N] ,mark[N];
    
    int main ()
    {
       int n ,m ,i ,a ,t;
       scanf("%d" ,&t);
       while(t--)
       {
          scanf("%d %d" ,&n ,&m);
          memset(mark ,255 ,sizeof(mark));
          for(i = 1 ;i <= n ;i ++)
          {
             scanf("%d" ,&a);
             mark[a] = 0;
          }
          int now = 200000+1;
          for(i = 200000+1 ;i >= 1 ;i --)
          {
             if(mark[i]) now = i;
             dp[i] = now;
          }
          for(i = 1 ;i <= m ;i ++)
          {
             scanf("%d" ,&a);
             printf("%d
    " ,dp[a]);
          }
       }
       return 0;
    }
    
    
    
    #include<stdio.h>
    #include<set>
    
    using namespace std;
    
    set<int>my_set;
    int mk[110000];
    
    int main ()
    {
       int i ,n ,m ,a ,t;
       scanf("%d" ,&t);
       while(t--)
       {
          scanf("%d %d" ,&n ,&m);
          int max = 0;
          for(i = 1 ;i <= n ;i ++)
          {
             scanf("%d" ,&mk[i]);
             if(max < mk[i]) max = mk[i];
          } 
          my_set.clear();
          for(i = 1 ;i <= max + 1 ;i ++)
          my_set.insert(i);
          my_set.insert(1100000);
          for(i = 1 ;i <= n ;i ++)
          my_set.erase(mk[i]);
          for(i = 1 ;i <= m ;i ++)
          {
             scanf("%d" ,&a);
             int ans = *my_set.lower_bound(a);
             if(ans == 1100000) ans = a;
             printf("%d
    " ,ans);
          }
       }
       return 0;
    }
             
    

  • 相关阅读:
    要使用springtest来进行单元测试 否则将无法注入 applicationContext.xml
    关键词的重要性
    发卡可以以交叉方式佩戴来增强可爱性
    红毛类型
    oracle学习总结4
    对springMVC的简单理解
    理解RESTful架构
    项目移植过程中报:“Project facet Java version 1.7 is not supported.” 错误
    svn服务器的搭建
    oracle学习总结3
  • 原文地址:https://www.cnblogs.com/csnd/p/12062900.html
Copyright © 2020-2023  润新知