导弹拦截--最长子序列问题(nlogn做法)

最长上升子序列(LIS)/最长不上升子序列问题算法详解+例题(树状数组/二分优化,看不懂你来打我) 目录最长上升子序列一、朴素做法O(2n)O(2^n)O(2n)二、优化做法O(nlogn)O(nlogn)O(nlogn)三、例题引入:P1020 导弹拦截(求最长上升子序列和最长不上升子序列)1.朴素做法暴力O(n2)O(n^2)O(n2)2.树状数组优化O(nlogn)O(nlogn)O(nlogn)3.二分优化O(nlogn)O(nlogn)O(nlogn)四、P4309 [TJOI2013... 阅读详情

第二遍写这道题,写写新的体会,对于最长子序列问题虽然说可以用dp解决,但是这是n方的做法,同时,存在nlogn的更优的做法(更像是贪心一类的),可以自己想想

传送门:

个人想法:对于二分的时候

                  我认为 最长上升子序列用lower_bound   最长不降用upper_bound                            

                              最长下降子序列用lower_bound   最长不升用upper_bound

#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int a[N];
int f[N]={1};
int len;
int b[N];
int c[N];
int lenn;

int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int k,cnt=0;
	while(cin>>k){
		a[++cnt]=k;//一共cnt个
	}
	c[0]=1e9;
	for(int i=1;i<=cnt;++i){
		if(a[i]<=c[lenn]){
			c[++lenn]=a[i];//构造一个动态数组,如果某一个数字小于尾数,就把他放在最后
		}
		else{
			*upper_bound(c+1,c+1+lenn,a[i],greater<int>())=a[i];
//学习一下书写形式   这里的意思是,找到第一个小于a[i]的数字并且将其换掉  
//比如说 我有5 3 2 1 现在要插入一个4  这时候 我就替换成5 4 2 1  如此一来就会更优
//这里之所以可以用upper 正是因为他是最长不升
//可以证明,只有出现接着5 4的序列 才会用到它,要不然并不会影响对后面数字的判断
		}
	}
	cout<<lenn<<endl;
	
	b[0]=-1e9;
	for(int i=1;i<=cnt;++i){
		if(a[i]>b[len]){
			b[++len]=a[i];
		}
		else{
			*lower_bound(b+1,b+1+len,a[i])=a[i];
//如果原来是 1 5 7 8  现在插入一个5   就变成1 5 7 8(这里是上升子序列,所以不能用upper_bound,我认为如果是最长不降是可以使用的)
		}
	}
	cout<<len<<endl;
	return 0;
}

[NOIP1999]导弹拦截NlogN做法 导弹拦截是一道经典的DP题,当时的数据使得N^2做法完全能够AC这道题。 然而对于这种最长不上升、或不下降、或严格上升、或严格下降的子序列长度求解问题都有一个非常实用的NlogN的做法,这种做法因为使用了二分查找,所以将N的复杂度降低到了logN。 阅读详情

相关推荐

洛谷OJ1020 nlogn解决最长非递增子序列与最长递增子序列

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

小凯的博客 579

最长上升/下降子序列

最长上升/下降子序列 下面代码都是以上升子序列为例 n ^ 2 解法: int ans=0; for(int i=1;i<=n;i++) { for(int j=1;j<i;j++) { if(a[i] > a[j]) dp[i] = max(dp[i], dp[j]+1); } ans = max(ans, dp[i]); } nlogn 解法: ​ 构造一个新的序列,每添加一个元素,若大于新序列d[len], len++, 若小于则

yezzz的博客 455

基于贪心算法与二分查找(时间复杂度为o(nlogn))对导弹拦截问题(NOIP1999提高组)的深入研究

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

PerfectPeter的博客 1149

hdu4604 最长上升,下降子序列nlogn

将数组反转后,求up[i]表示包括i的最长不降序列,down[i]表示最长不上升序列,取最优。 nlogn的算法:若要求最长上升序列,p[i]表示长度为i的序列的末尾最小值(贪心,最小值更有潜力获得更长的串),很明显p是单调增的,当加入一个新元素时,二分p中最靠右的小于它的值j,更新p[j+1],同时记录up[i]。最长下降同理,p[i]表示长度为i的序列的末尾最大值(贪心,最大值更有潜力获得更

Every day 648

国产系统迁移实战:在银河麒麟V10上搞定Wine32位支持,让老Windows软件跑起来

本文详细介绍了在银河麒麟V10操作系统上构建Wine32位支持的全过程,帮助用户解决Windows应用迁移难题。从系统架构差异分析到Wine环境配置,再到实战应用部署与优化,提供了一套完整的解决方案,确保老Windows软件在国产系统上稳定运行。

weixin_32288959的博客 649

深入RK3588嵌入式Linux开发:uboot源码定制化移植实战

本文详细介绍了RK3588嵌入式Linux开发中,如何绕过庞大的官方SDK,从官方仓库获取纯净U-Boot源码并进行定制化移植的完整实战流程。内容包括编译环境搭建、交叉工具链配置、源码结构解析、设备树(Device Tree)修改、环境变量定制、编译脚本编写以及常见问题调试技巧,旨在帮助开发者深入理解系统引导过程,掌握为定制硬件适配U-Boot的核心技能。

weixin_29169505的博客 424

最长下降(上升)子序列

ICPC 昆明 L Simone and graph coloring 这里因为memset里最开始用sizeof(d)导致t了,以后注意一下。 使用dp,O(nlogn)。具体思路就是从开始维护一个d序列,遇到一个更大的就放到d序列里,如果遇到的小于就二分查找d序列中他应该在的位置,然后替换掉即可,因为之前留的那个已经没用了。。 #include<bits/stdc++.h> using namespace std; #define ll long long const int maxn =

Philomelll的博客 401

2021年J题:基于STM32F103的周期信号波形识别与参数测量系统设计(立创EDA+SZPT_ZXL)

本文详细复盘了2021年全国大学生电子设计竞赛J题获奖项目,手把手教你如何基于STM32F103微控制器设计并实现周期信号波形识别与参数测量系统。文章深入剖析了硬件电路设计(包括程控放大、工作点抬升与滞回比较器)与核心软件算法(如动态采样、FFT频谱分析与波形识别逻辑),并分享了DMA传输、FFT库使用等实战要点与避坑指南,为嵌入式信号处理与电赛备赛提供了宝贵经验。

weixin_32673065的博客 230

最长上升子序列、最长下降子序列的DP算法由O(n^2)到O(nlogn)算法实现及其优化

为了更好的介绍O(nlogn)算法,我们回顾一下一般的O(n^2)的算法。 令A[i]表示输入第i个元素,d[i]表示从A[1]到A[i]中以A[i]结尾的最长子序列长度。对于任意的0 DP状态转移方程:d[i] = max{1, d[j] + 1} (j = 1, 2, 3, ..., i-1 且 A[j] ① 对于最长不下降子序列,怎样实现O(nlogn)算法呢?我们知道O(n

Wall_F的专栏 2万+

立创EDA手动拼板实战:当自带功能不够用,如何用‘复制粘贴’搞定异形拼版与特殊布局

本文详细介绍了立创EDA手动拼板技术在异形拼版与特殊布局中的应用实战。通过CTRL+SHIFT+V等核心操作技巧,解决混合尺寸拼板、特殊间距需求等复杂场景,提升PCB设计效率与灵活性,特别适合需要高精度控制的射频电路和医疗设备项目。

weixin_31967485的博客 387

RPA 财务共享中心与RPA赋能

在和集团财务官交流的时候,客户经常会提到FSSC,其中有准备建立FSSC,正在建立FSSC,以及已建成FSSC正使用的,当中会有些对FSSC的疑虑和问题,所以花费些时间对FSSC进行了深入调研,从而也有幸拜读了王兴山、陈剑、梅震、钱自严等专业人士写的几本关于FSSC的书,对FSSC的前因后果有了更深入的认识,同时结合自己在FSSC的一些项目经验,故做了本次分享。 本文章主要分享财务共享中心以及R...

weixin_40244959的博客 2756

求最长上升(下降)子序列的长度—DP及其优化和nlogn法

最长严格上升子序列是一个十分常见的问题。这里我给出三种方法,一步步提升它的速度。   一、DP法 很容易想到它的转移方程f[i]=max(f[j])+1 (要求a[i]&gt;a[j]) 这样一种O(n²)的方法,很容易理解。   二、DP+树状数组(或其他rmq算法) 树状数组用于优化求max(f[j])。但树状数组求区间最大值很有局限性,它要求这个最大值只能变大,一旦减小就无法更...

A_Bright_CH的博客 4643

R语言实战:非正态数据下的Scheirer–Ray–Hare检验全流程解析

本文详细解析了在R语言中执行Scheirer–Ray–Hare检验的全流程。当实验数据不符合正态分布时,该非参数检验是分析两因素设计(包括主效应和交互效应)的有效工具。文章从原理、环境配置、数据导入、核心代码到结果解读与报告撰写,提供了完整的实战指南,并附有常见的避坑建议。

weixin_29061465的博客 398

洛谷P1020 导弹拦截【单调栈】

题目:https://www.luogu.org/problemnew/show/P1020 题意: 给定一些导弹的高度。 一个导弹系统只能拦截高度不增的一系列导弹,问如果只有一个系统最多能拦截多少导弹。 再问,如果要拦截所有导弹最少需要多少系统。 思路: 对于第一个问题其实就是找整个序列中的最长不升子序列。 对于第二个问题就是找整个序列中的最长上升子序列。因为当有一个高度大于前面的...

weixin_30853329的博客 235

YOLOv11改进:引入SSA序列打乱注意力模块与MSCSA二次创新模块,适配目标检测、图像分类与实例分割

YOLOv11改进:引入SSA与MSCSA模块提升CV任务性能 摘要: 本文提出在YOLOv11中集成SSA(序列打乱注意力)和MSCSA(多尺度上下文序列打乱注意力)模块,以解决计算机视觉任务中的关键挑战。SSA通过序列打乱和局部窗口注意力机制,在降低计算复杂度的同时增强长距离依赖建模能力;MSCSA进一步引入多尺度上下文融合和动态序列打乱策略,优化了多尺度目标检测和实例分割的边界特征处理。这些改进有效解决了传统注意力机制在全局上下文建模、局部细节保持和序列顺序敏感性方面的不足。实验表明,该方法在目标检测

走向CTO的路上... 858

2024年ERP管理系统职业技能大赛软件测试赛项-测试报告

【说明本次测试的最终测试结果总结、测试过程中遇到的重要问题以及如何解决、被测系统的质量结论、个人的收获以及团队的得失等】【说明编写本测试报告的目的和实际读者】【说明本次测试实际人员安排及主要职责】【说明本次测试使用的测试用例设计方法】【说明本次测试使用的测试方法】【针对本次测试进行Bug汇总】【针对本次测试进行用例汇总】【说明本项目的背景情况】【说明本次测试的实际。

Code is fun. 789

洛谷P1020导弹拦截——最长不升/上升子序列

洛谷P1020导弹拦截——最长不升/上升子序列

lijingheng66的博客 1307

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

洛谷P1020导弹拦截

故每次将第i个的最好状态(即到第i个序列的最长长度)存入,等到判断第i+1时,若满足小于等于第i个元素,则直接在第i个最好状态上加1,此时即第i个元素基础上的最好状态,可此时是第i+1的最好状态吗?需要一个数组存储前i-1个的最少条数,若第i个与第i-1个发生冲突,无法接入序列,则取第i-1个基础上加1的条数,遍历前i-1最少条数,取遍历中最大的条数,即为第i个的最少条数。如何判断是否能接入次优长度,我们知道次优长度时元素值大概率不唯一,那么如果此时取最大那个元素值,就会对后面即将接入的元素容纳度更高。

weixin_73296216的博客 2602

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

无论哪一种选择,当前数都会是某个导弹拦截系统的最后一个数,要使导弹拦截系统的数量尽可能的小,贪心地想,在选择之后,要让除当前数所在导弹导弹拦截系统外的所有系统的最后一个数尽可能的大,也就是要找到大于等于当前数的最小导弹系统结尾数,把当前数接在这个导弹系统的后面,这样在后面的选择中这些系统才能容纳的导弹高度更高,才能让导弹拦截系统的数量尽可能的小。选择一:重新开一个导弹拦截系统,要在g[]数组后面加上当前数,由于选择一的前提就是当前数大于所有的结尾数,所以插入的数一定是大于之前g[]数组的结尾数的。

2301_79216459的博客 2146

计算机控制技术及应用

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

P1020 导弹拦截(nlogn最长上升子序列)

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

tomjobs的博客 660

信息学奥赛一本通 1260 【例9.4】拦截导弹(Noip1999) | 洛谷 P1020 [NOIP1999 普及组] 导弹拦截

ybt 1260 【例9.4】拦截导弹(Noip1999) 洛谷 P1020 [NOIP1999 普及组] 导弹拦截 本题为完整问题,拆分后的问题: 第1个问:ybt 1289:拦截导弹 第2个问:ybt 1322:【例6.4】拦截导弹问题(Noip1999)该解法两问的复杂度均为O(n2)O(n^2)O(n2),该解法可以通过【ybt 1260】,提交【洛谷P1020】只能得100分。不上升子序列:序列中后面的元素小于等于前面的元素 状态定义:表示以i为结尾的最长不上升子序列的长度。 状态转移方程: 分割

君义NOIP的博客 6265

[NOIP1999 提高组] 导弹拦截

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

hhhh 985

最长不下降子序列 最长不升子序列 最长上升子序列 最长下降子序列 n^2 nlogn

最长不下降子序列 最长不升子序列 最长上升子序列 最长下降子序列 n^2 nlogn 以洛谷P1020 导弹拦截为例 O(n^2)算法 AC代码如下 //1999 导弹拦截 #include <stdio.h> #include <string.h> int a[100+10]; int d[100+10]; int t[100+10]; int...

mrcrack的博客 785

拦截导弹 & 导弹防御系统

第二个问题,可以用贪心的思想来做,每次新到的导弹,我们用当前导弹高度恰好大于等于该导弹高度的导弹系统去拦截,这样所用的导弹系统的数量是最少的。**分析:**这道题稍微复杂一些,因为有两种拦截导弹的可能,由于数据范围较小,可以直接暴力枚举每一种可能,第一个问题为输出最长递减子序列,由于导弹数在1000以内所以采用时间复杂度为。我这里求最长上升子序列和贪心的时间复杂度都为。** 代码如下:**

chp的博客 3597

蓝桥杯 算法训练 拦截导弹 By Assassin [最长下降子序列nlogn]

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

Assassin 1253

洛谷 P1020 [NOIP1999 普及组] 导弹拦截【一题掌握三种方法:动态规划+贪心+二分】最长上升子序列LIS解法详解

一题掌握三种方法!贪心+动态规划+二分。先介绍题目思路,再进入代码实践,知己知彼,百战不殆。另外给出两个测试用例,帮助卡住的小伙伴测试自己的代码!另外介绍Dilworth定理!好耶!学习使我快乐!

flyunicorninsky的博客 1257
上一篇: 最大公约数的应用,位运算 921 C思路整理
下一篇: 区间dp-环形石子合并
why_not_fly
博客等级 码龄3年 593粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值