• HDU 1257


    分析:
      依次保存现在每个拦截系统能拦截的最高的高度,接下来输入的每一个高度,依次和这若干个拦截系统现在所能拦截的最高高度比较,若某次该输入的高度小于某个拦截系统的最高高度,就替代这个拦截系统的最高高度;若比这些拦截系统的高度都高,就重新创造一个拦截系统并将这次输入的高度作为新建拦截系统的最高高度.

    代码如下:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <fstream>
     5 #include <ctime>
     6 #include <cmath>
     7 #include <cstdlib>
     8 #include <algorithm>
     9 #include <set>
    10 #include <map>
    11 #include <list>
    12 #include <stack>
    13 #include <queue>
    14 #include <iterator>
    15 #include <vector>
    16 
    17 using namespace std;
    18 
    19 #define LL long long
    20 #define INF 0x3f3f3f3f
    21 #define MOD 1000000007
    22 #define MAXN 10000010
    23 #define MAXM 1000010
    24 #define inf 0x7fffffffffffffff
    25 #define maxf 0x7fffffff
    26 
    27 
    28 int a[MAXN], b[MAXN];   //数组a保存导弹高度,数组b保存每套系统的最高拦截高度
    29 
    30 int main()
    31 {
    32     int n;
    33     while(scanf("%d", &n)==1)
    34     {
    35         int cnt = 0;    //拦截系统的数量
    36         b[0] = 0;
    37         for(int i = 0; i < n; i++ )
    38         {
    39             scanf("%d", &a[i]);
    40             for(int j = 0; j <= cnt; j++ )    //每次输入的高度要与现在所有的拦截系统比较
    41             {
    42                 if(a[i]<b[j])
    43                 {
    44                     b[j] = a[i];
    45                     break;
    46                 }
    47                 else if(j == cnt)
    48                 {
    49                     cnt++;
    50                     b[cnt] = a[i];
    51                     break;
    52                 }
    53             }
    54         }
    55         printf("%d
    ", cnt);
    56     }
    57 
    58     return 0;
    59 }
  • 相关阅读:
    简单区间dp
    【题解】石子合并
    【2019.7.6】刷题记录
    【题解】大朋友的数字
    【基础】dp系列1
    【题解】垃圾陷阱
    【题解】导弹拦截
    hadoop各组件安装(非专业人士,不定期更新)
    python逼格提升
    python第三十二天-----算法
  • 原文地址:https://www.cnblogs.com/xl1164191281/p/5768216.html
Copyright © 2020-2023  润新知