zoukankan      html  css  js  c++  java
  • 【OpenJ_Bailian

    拦截导弹


     Descriptions:

    某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。

    Input

    输入有两行, 
    第一行,输入雷达捕捉到的敌国导弹的数量k(k<=25), 
    第二行,输入k个正整数,表示k枚导弹的高度,按来袭导弹的袭击时间顺序给出,以空格分隔。
    Output

    输出只有一行,包含一个整数,表示最多能拦截多少枚导弹。 

    Sample Input

    8

    300 207 155 300 299 170 158 65

    Sample Output

    6

    题目链接:
    https://vjudge.net/problem/OpenJ_Bailian-2945

    乍一看我以为是最长不增长子序列,然后就玩了一次小聪明,把数倒过来输入,然后按最长增长子序列来做,然后悲剧发生了,我改了2个小时的bug,改到怀疑人生,但就是不对,最后老老实实的重新写,AC了才发现“必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹”,崩溃了!!!!

    说一下思路吧,dp[i]以a[i]为前缀的子序列长度,状态转移方程:如果a[i]<=a[j],那么a[j]前面肯定可以放a[i],dp[i]=max(dp[i],dp[j]+1)。

    AC代码

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <fstream>
     4 #include <algorithm>
     5 #include <cmath>
     6 #include <deque>
     7 #include <vector>
     8 #include <queue>
     9 #include <string>
    10 #include <cstring>
    11 #include <map>
    12 #include <stack>
    13 #include <set>
    14 using namespace std;
    15 int a[50];
    16 int dp[50];
    17 int maxn=0;
    18 int main()
    19 {
    20     int k;
    21     cin >> k;
    22     for(int i=0; i<k; i++)
    23         {
    24             cin >>a[i];
    25             dp[i]=1;//初始状态,以a[i]为前缀都为1
    26         }
    27     for(int i=1; i<k; i++)
    28         for(int j=0; j<i; j++)
    29         {
    30             if(a[i]<=a[j])
    31             {
    32                 dp[i]=max(dp[i],dp[j]+1);//状态转移方程
    33                 maxn=max(dp[i],maxn);
    34             }
    35         }
    36     cout << maxn << endl;
    37 }

     

     

     

  • 相关阅读:
    蔚来汽车笔试题---软件测试
    python 装饰器
    adb
    新手安装禅道至本地
    各种验证码应该如何给值
    int col = Integer.parseInt(args[0]);的用法
    找不到jsp文件:ctrl+shift+R
    通过服务器获取验证码
    Sublime Text 2: [Decode error
    爬虫爬取新闻(二)
  • 原文地址:https://www.cnblogs.com/sky-stars/p/10943783.html
Copyright © 2011-2022 走看看