【动态规划】拦截导弹1

2022年03月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试 某国为了防御敌国的导弹袭击, 发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷: 虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天, 雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段, 所以只有一套系统, 因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于 30000 的正整数) , 计算这套系统最多能拦截多少导弹。时间限制: 1000内存限制: 65536第一行是一个整数 N(不超过 15) , 表示导弹数。 阅读详情

题目描述

       某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,由于该系统还在试用阶段。所以只有一套系统,因此有可能不能拦截所有的导弹。
      输入导弹依次飞来的高度(雷达给出的高度不大于30000的正整数)。计算这套系统最多能拦截多少导弹。

输入

N颗依次飞来的导弹高度,(导弹个数<=1000)。

输出

一套系统最多拦截的导弹数,并依次打印输出被拦截导弹的高度。
注意:若有多种拦截导弹的方案,则应输出导弹编号尽量靠前的那种方案。

样例输入

300 250 275 252 200 138 245

样例输出

5
300 275 252 200 138

求最长不下降序列,为了最后的输出,我们另外设一个状态,用来存此数前面拦截导弹的序号,由于不确定第一个拦截的子弹,所以从方案里的最大序号开始根据状态往前搜索,并储存,将储存的数组逆序输出就OK啦!(不清楚的见代码,也可以评论)

#include <bits/stdc++.h>
using namespace std;
int n = 1, a[1001], b[1001][2], ans, t, k[1001];

main()
{
	while (cin >> a[n])
		n++;
	n--;
	for (int i = 1; i <= n; i++)
		b[i][0] = 1;
	for (int i = 1; i <= n; i++)
		{
			for (int j = 1; j < i; j++)
				{
					if (a[j] >= a[i])
						{
							if (b[j][0] + 1 > b[i][0])
								{
									b[i][0] = b[j][0] + 1;
									b[i][1] = j;
								}
						}
				}
			if (b[i][0] > ans)
				{
					ans = b[i][0];
					t = i;
				}
		}
	printf("%d\n", ans);
	int p = 1;
	while (b[t][1] != 0)
		{
			k[p] = a[t];
			p++;
			t = b[t][1];
		}
	k[p] = a[t];
	for (int i = p; i >= 1; i--)
		printf("%d ", k[i]);
}

拜了个拜~ 

2022 年 3 月青少年软编等考 C 语言四级真题解析 2022 年 3 月青少年软编等考 C 语言四级真题解析。 阅读详情

相关推荐

STM32CubeIDE(CUBE-MX hal库)----RTC时钟断电保持与时间校准实战

本文详细介绍了在STM32CubeIDE中使用CUBE-MX和HAL库实现RTC时钟断电保持与时间校准的实战方法。通过硬件配置、后备寄存器(BKP)操作及软件校准策略,确保嵌入式设备在断电后仍能保持准确时间,适用于智能电表、环境监测等物联网应用场景。

weixin_29189373的博客 216

动态规划问题———拦截导弹(C语言)

6.拦截导弹 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,由于该系统还在试用阶段。所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度不大于30000的正整数)。计算这套系统最多能拦截多少导弹。 输入:N颗依次飞来的导弹高度,(导弹个数大于1000)。 输出:一套系统最多拦截的导弹数,并依次打印输出被拦截导弹的高度。 该问题可近

weixin_47903856的博客 6668

逆向分析第一步:如何从HEX文件‘还原’出单片机的原始程序与数据?

本文详细解析了如何从HEX文件逆向分析出单片机的原始程序与数据,涵盖了固件逆向的底层逻辑与实践。通过介绍HEX文件的结构、内存映像重建技术以及专业工具链的使用,帮助读者掌握从十六进制数据到可执行代码的完整流程,适用于嵌入式系统开发和逆向工程领域。

weixin_29745609的博客 316

动态规划——导弹拦截

某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。设d(i)表示,拦截第i个导弹后,还能拦截的导弹数量(包含第i个)。设xm为导弹序列中的最小值,则d(m)=1;第一行输入M表示包含M组测试数据,每组第一个输入N (N

lyhizjj的博客 1248

优化求解器性能:当分支切割算法中的gap停滞不前时如何应对

本文深入探讨了当分支切割算法求解复杂整数规划问题时,gap停滞不前的根本原因与应对策略。文章指出gap停滞源于上界(找不到更优整数解)或下界(证明过程缓慢)提升受阻,并提供了从模型改写、自定义割平面、调整搜索策略到参数调优等一系列实战方法,帮助优化工程师有效打破求解僵局,推动gap下降。

weixin_29294597的博客 381

从理论到代码:蒙特卡洛法在光学散射模拟中的应用全解析(Matlab 2014a版)

本文详细解析了蒙特卡洛法在光学散射模拟中的应用,从数学原理到Matlab 2014a实现。通过模拟光子随机游走过程,精确描述光在浑浊介质中的传输特性,提供完整的源码实现和性能优化技巧,适用于生物医学光学、大气遥感等领域。

rum55的博客 627

【刷题】动态规划——线性DP(最长上升子序列):拦截导弹【贪心证明、nlogn做法、二分】

第一问就是普通的最长下降子序列,重点是第二问。 先给出贪心策略: 首先假设已有若干套系统拦截了导弹,对于一个新来的导弹X: 1、如果已有的系统能够拦截X,很自然的想法是把他丢到已有系统中末尾最小的,因为这样其他系统的末尾才能尽可能大,拦截更多的导弹。 2、如果已有系统都不能拦截X,那么创建一个新的系统。 问题是如何证明这个贪心是对的? 假设A是贪心法得到的序列数,B是最优解得到的序列数,显然B的序列是最少的,即B <= A。 现在有若干序列,新来了导弹X,假设贪心法和最优解使X接在了不同的序列后面.

qq_42581685的博客 734

论文分享|ECCV2022,PATnet,Cross-Domain Few-Shot Semantic Segmentation,CDFSS新基准,文末有复现教程

这篇论文提出的跨域小样本语义分割(CD-FSS)任务,旨在将源域学习的分割能力迁移到目标域,仅需少量标注样本。针对传统小样本分割方法在跨域场景性能下降的问题,作者提出了基于金字塔锚点变换的网络(PATNet),通过将域相关特征转换为域无关特征,并引入任务自适应微调推理(TFI)提升目标域适应能力。实验表明,PATNet在1-shot和5-shot设置下分别比现有方法提升8.49%和10.61%的准确率。同时,作者构建了CD-FSS基准并设计了任务难度评估指标。代码和数据集已开源,复现难度中等。

m0_74277350的博客 1094

拦截导弹——动态规划

导弹拦截

weixin_65569894的博客 915

LM358实战:手把手教你搭建电流检测电路(附电阻选型计算)

本文详细解析了使用LM358运算放大器搭建电流检测电路的全过程,包括基础原理、采样电阻选型、放大电路设计及PCB布局技巧。通过实战案例和精确计算,帮助工程师快速掌握低成本、高精度的电流检测方案,适用于电源管理、电机控制等多种应用场景。

weixin_30872157的博客 447

5G NR切换测量事件解析:从A1到B2的实战应用指南

本文深入解析5G NR切换测量事件,从A1到B2的实战应用指南。详细介绍了系统内切换事件(A1-A6)和系统间切换事件(B1-B2)的触发条件与配置建议,帮助优化网络性能。通过实际案例分享,展示如何调整参数提升切换成功率和降低乒乓切换率,适用于5G网络优化工程师。

tcp8optimizer的博客 512

【python】拦截导弹

某国为了防御敌国的导弹袭击,发明出一种导弹拦截系统。

python一生之敌的博客 876

PyTorch深度学习实战(4)——常用激活函数和损失函数详解

激活函数和损失函数是深度学习模型中重要组成部分,激活函数和损失函数的选择很大程度上决定了深度神经网络的性能和精度,需要根据具体问题的特点和数据分布等因素进行选择。在本节中,将介绍深度学习中常见的激活函数和损失函数,并说明不同函数的常见应用场景。

盼小辉丶的博客 1万+

1168. 【动态规划】拦截导弹1

某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,由于该系统还在试用阶段。所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度不大于30000的正整数)。注意:若有多种拦截导弹的方案,则应输出导弹编号尽量靠前的那种方案。一套系统最多拦截的导弹数,并依次打印输出被拦截导弹的高度。N颗依次飞来的导弹高度,(导弹个数<=1000)。

wrnxrxsb的博客 386

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

牛客:【2021秋季算法入门班第七章习题:动态规划1】部分题解:方块与收纳盒、舔狗舔到最后一无所有、可爱の星空、[NOIP1999]拦截导弹

牛客题单——动态规划

WSY444的博客 1111

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

2021-01-12动态规划的最长xx子序列问题

一. 第二题 1.题面: 2.题解: 以为是01背包,测试样例正确但是段错误, “但是这个题目没办法直接用动态规划,因为这个和会非常非常大,导致状态空间过大,会内存溢出,所以最后AC的代码还是用了搜索+剪枝,直接搜索所有可能的选择” 用·剪枝的dfs,回头补 补充:关于getline函数: getline 的 C++ 函数。此函数可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中。 getline 函数如下所示:getline(cin, inputLine);

weixin_46064382的博客 168

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

环形数组最大和,矩阵最小路径和,过河卒,拦截导弹

先看这个点是不是马点,是的话标记为零。令初始位置 dp[0][0]=1,这是可以走的点,状态转移方程。找出maxvalue,以及sum-minvalue,看哪个最大。求出他的最长递增序列和最长递减序列。

hhhg1234的博客 343

拦截导弹 (最长不上升子序列)基础dp题

题目 拦截导弹 描述 一种导弹拦截系统的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度,计算这套系统最多能拦截多少导弹 输入格式 第一行是一个整数n(n&amp;amp;amp;lt;=1000),代表接下来有n个导弹。 第二行有n个整数。代表每个导弹的高度(0&amp;amp;amp;lt;高...

Roy_Wang的博客 655

【较难,技巧题】动态规划 [NOIP1999]拦截导弹 ——求最大下降子序列长和最小覆盖全部数据的序列数

点击打开链接(新发现的一个oj,样式很小清新呀)题目大意:n个导弹,(1)求最大非上升子序列长度(2)要拦截所有导弹最少要配备这种导弹拦截系统的套数思路1:每一次求最大非上升子序列,求一次删一次。直到数组全0。有点害怕超时,然而没有hhh注意:1、需要记录序列不能用O(nlogn)的方法2、lower_bound()函数的要求是查找数组是非递减的,找第一个&gt;=x的位置;upper_bound...

Always_ease的博客 839

[题解] [NOIP 1999] 导弹拦截

有若干枚导弹,每一枚导弹的高度是hi​,导弹拦截系统每次拦截导弹都不能比上一次拦截的高度更高,导弹拦截没有冷却时间且第一次拦截的高度任意。问题1:一套系统最多能拦截多少导弹?问题2:拦截所有导弹最少需要多少个拦截系统?

東木的博客 1330

动态规划(3)

Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955 #include #include #include #include using namespace std; //这题是参考网友的代码····自己的能力还是不可以。不过做了这题,再和0-1背包问题想一想,觉得收获还是不错。 //网友说将逃跑率当成物品价值····小弟还是

Allen_L_L的专栏 646

导弹防御系统

题目描述 【问题描述】 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。 【输入形式】 每组输入有两行, 第一行,输入雷达捕捉到的敌国导弹的数量k(k<=25), 第二行,输入k个正整数,表示k枚导弹的高度,

Bubu的博客 355

从导弹防御系统到序列分割:贪心算法的奇妙应用场景

本文探讨了贪心算法在导弹防御系统和序列分割中的高效应用,以NOIP1999的拦截导弹问题为例,展示了贪心策略如何通过局部最优选择实现全局最优解。文章还分析了贪心算法的数学基础、跨领域应用(如资源分配、物流优化)及其局限性,为算法爱好者提供了深入见解。

u6v7w8x的博客 1011

【ACM】拦截导弹 - 0-1背包问题

拦截导弹 时间限制:3000ms | 内存限制:65535KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于等于前一发的高度。某天,雷达捕捉到敌国导弹来袭。由于该系统还在试用阶段,所以只用一套系统,因此有可能不能拦截所有的导弹。 输入第...

weixin_30762087的博客 112

算法分析与设计5_动态规划

动态规划 动态规划算法通常用于求解具有某种最优性质的问题。 在这类问题中,可能会有许多可行解。 每一个解都对应于一个值,我们希望找到具有最优值的解。 基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。 适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。 如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。 我们可以用

weixin_44618388的博客 307

《计算机考研-机试指南》- 6动态规划

文章目录递归求解N阶楼梯上楼问题不容易系列之一最长递增子序列LIS拦截导弹最长公共子序列LCSCoincidence状态与状态转移方程动态规划问题分析举例背包采药-典型的0-1背包问题Piggy-Bank-变种完全背包问题 递归求解 N阶楼梯上楼问题 题意: 一次走两阶或者一阶,问有多少种上楼方式。 定义: dp[i]为i阶楼梯方式。目标:dp[n]。 考察最后一步,要么上一阶,要么上二阶。故状态...

三岁的博客 512
上一篇: 【USACO题库】1.5.4 Checker Challenge跳棋的挑战
下一篇: 【USACO题库】1.2.4 Palindromic Squares回文平方数
开朗的坤坤
博客等级 码龄5年 11粉丝 26原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值