当前位置: 首页 > web >正文

P1020 [NOIP 1999 提高组] 导弹拦截

P1020 [NOIP 1999 提高组] 导弹拦截 - 洛谷

题目描述

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

输入导弹依次飞来的高度,计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

输入格式

一行,若干个整数,中间由空格隔开。

输出格式

两行,每行一个整数,第一个数字表示这套系统最多能拦截多少导弹,第二个数字表示如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

输入输出样例

输入 #1
389 207 155 300 299 170 158 65
输出 #1
6
2

说明/提示

对于前50%数据(NOIP原题数据),满足导弹的个数不超过1e4个。该部分数据总分共100分。可使用O(n2)做法通过。

对于后50%的数据,满足导弹的个数不超过1e5个。该部分数据总分也为100分。请使用O(nlogn)做法通过。

对于全部数据,满足导弹的高度为正整数,且不超过5×1e4。

此外本题开启spi,每点两问,按问给分。

NOIP1999提高组 第一题

upd 2022.8.24:新增加一组Hack数据。

思路:


代码:
 

#include<bits/stdc++.h>
using namespace std;
const int N = 5e5 + 10;
int a[N],dp[N],f[N];
int main(void)
{int t,n = 0;while(cin >> t){++n;a[n] = t;	}for(int i = 1 ; i <= n ; i++){dp[i] = 1;f[i] = 1; }for(int i = 1 ; i <= n ; i++){for(int j = 1 ; j < i ; j++){if(a[j] >= a[i])dp[i] = max(dp[i],dp[j] + 1);}}int ans = -1;for(int i = 1 ; i <= n ; i++)ans = max(ans,dp[i]);for(int i = 1 ; i <= n ; i++){for(int j = 1 ; j < i ; j++){if(a[j] < a[i])f[i] = max(f[i],f[j] + 1);}}int res = -1;for(int i = 1 ; i <= n ; i++)res = max(res,f[i]);cout <<  ans << endl << res; return 0;
}

http://www.xdnf.cn/news/5073.html

相关文章:

  • Java——多态
  • 热力图是什么?三分钟学会热力图数据分析怎么做!
  • Dify MCP实战 - 邮件发送
  • 【动态导通电阻】p-GaN HEMTs正向和反向导通下的动态导通电阻
  • MySQL数据库故障排查与解决方案
  • VMware中ubuntu虚拟机基本配置
  • 时间有变!Sui Overflow 2025 最新安排
  • Auto DOP:让并行执行实现智能调优 | OceanBase 实践
  • Python实例题:Python快速获取斗图表情
  • 电机试验平台:实现性能评估与优化的关键工具
  • groovy @CompileStatic注解小记
  • 常见图像融合算法(图像泊松融合)
  • Qt开发经验 --- 避坑指南(9)
  • CST仿真喇叭/波导相位中心
  • 面对渠道竞争,品牌该如何应对?
  • Base64 编码原理详细解析
  • OpenManus中使用命令行运行py脚本报错
  • NoMachine 将虚拟显示器改为物理显示器
  • 树初步 #1(插排串联 - 辽宁省2024CCPC)
  • 【C】初阶数据结构15 -- 计数排序与稳定性分析
  • 报表控件stimulsoft教程:使用 JoinType 关系参数创建仪表盘
  • 番茄爽文小说,叙事技巧情感设计有哪些?
  • 实现线程的4种方法
  • 深入理解主从数据库架构与主从复制
  • AD 排针类元件模型的创建
  • 影刀RPA开发-智能录制
  • MySQL 第三讲---基础篇 库与表操作(下)
  • 华为防火墙双机热备(负载分担)
  • U9C-SQL-调出单视图
  • 小厂golang面经