牛客NC14361 - 拦截导弹

简介: 牛客NC14361 - 拦截导弹

拦截导弹

题目描述

某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。


输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

输入描述:

一行,为导弹依次飞来的高度

输出描述:

两行,分别是最多能拦截的导弹数与要拦截所有导弹最少要配备的系统数

题目没说,其实数据是1e5 的大小 (我开始还特意写了3e6的大小)

dp题目,我本来还以为有什么很好的解法,题目很难来着,结果其实就是暴力

分两问看:

  1. 第一问相当于是求最大上升子序列 (下降)
  2. 第二问需要归纳,我们发现,每一次从大到小去找非递增子序列(符合条件就加进去,不符合就跳过) ,和你每一次都去找最长的非递增子序列,其实结果是一样的…(是真无语啊,我还以为是啥算法呐,开始想出来这个,没敢写,送感觉会卡…)
#include<iostream>
#include<deque>
using namespace std;
const int N = 3e5+10;

int a[N];
int dp[N];
bool vis[N];

// 1e5 的数据大小

int main() {
  int n=0,x,mx=0;
  while(cin>>x) {
    a[++n]=x;
    for(int j=n;j>=1;j--) {
      if(a[n]<=a[j]) dp[n]=max(dp[n],dp[j]+1);
    }
        mx=max(mx,dp[n]);
  }
//     for(int i=1;i<=n;i++) cout<<"a["<<i<<"]:"<<a[i]<<endl;
//     for(int i=1;i<=n;i++) cout<<"dp["<<i<<"]:"<<dp[i]<<endl;
  cout<<mx<<endl;
  int cn=0;
  int an=0;
  while(true) {
    int mi = 40000;
    an++;
    for(int i=1;i<=n;i++) {
      if(!vis[i] && a[i]<=mi) {
        mi = a[i];
        cn++;
        vis[i]=true;
      }
    }
    if(cn == n) break;
  }
  cout<<an<<endl;
  return 0;
} 


目录
相关文章
|
人工智能 算法 Serverless
算法竞赛入门【码蹄集新手村600题】(MT1301-1350)
算法竞赛入门【码蹄集新手村600题】(MT1301、MT1302、MT1303、MT1304、MT1305......MT1350)
827 2
算法竞赛入门【码蹄集新手村600题】(MT1301-1350)
|
7月前
|
算法 C语言
【牛客-算法】NC56 回文数字
🚩 前言 🔥 该专栏作为算法题笔记,记录算法的思路、遇到的问题,以及能跑的代码,持续更新中! 🔥 推荐一款面试、刷题神器牛客网:👉开始刷题学习👈
64 0
|
算法
算法竞赛入门【码蹄集新手村600题】(MT1151-1200)
算法竞赛入门【码蹄集新手村600题】(MT1151、MT1152、MT1153、MT1154、MT1155......MT1200)
634 1
算法竞赛入门【码蹄集新手村600题】(MT1151-1200)
|
安全 Go
每日一题 --- 2100. 适合打劫银行的日子[力扣][Go]
每日一题 --- 2100. 适合打劫银行的日子[力扣][Go]
每日一题 --- 2100. 适合打劫银行的日子[力扣][Go]
|
算法 Java BI
算法竞赛入门【码蹄集新手村600题】(MT1551-1600)
算法竞赛入门【码蹄集新手村600题】(MT1551、MT1552、MT1553、MT1554、MT1555......MT1600)
364 1
算法竞赛入门【码蹄集新手村600题】(MT1551-1600)
|
人工智能 算法 搜索推荐
算法竞赛入门【码蹄集新手村600题】(MT1401-1450)
算法竞赛入门【码蹄集新手村600题】(MT1401、MT1402、MT1403、MT1404、MT1405......MT1450)
403 1
算法竞赛入门【码蹄集新手村600题】(MT1401-1450)
|
算法 Serverless
算法竞赛入门【码蹄集新手村600题】(MT1351-1400)
算法竞赛入门【码蹄集新手村600题】(MT1351、MT1352、MT1353、MT1354、MT1355......MT1400)
374 1
算法竞赛入门【码蹄集新手村600题】(MT1351-1400)
|
存储 算法 C语言
算法竞赛入门【码蹄集新手村600题】(MT1001-1050)
算法竞赛入门【码蹄集新手村600题】(MT1001、MT1002、MTT1003、MTT1004、MTT1005......MT1050)
1578 1
算法竞赛入门【码蹄集新手村600题】(MT1001-1050)
|
算法 容器
算法竞赛入门【码蹄集新手村600题】(MT1101-1150)
算法竞赛入门【码蹄集新手村600题】(MT1101、MT1102、MT1103、MT1104、MT1105......MT1150)
1006 1
算法竞赛入门【码蹄集新手村600题】(MT1101-1150)
|
机器学习/深度学习 算法
算法竞赛入门【码蹄集新手村600题】(MT1201-1250)
算法竞赛入门【码蹄集新手村600题】(MT1201、MT1202、MT1203、MT1204、MT1205......MT1250)
700 1
算法竞赛入门【码蹄集新手村600题】(MT1201-1250)

热门文章

最新文章