动态规划刷题(算法竞赛、蓝桥杯)--导弹拦截(线性DP)

1、题目链接:NOIP1999 提高组 导弹拦截 - 洛谷

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int a[N],x,n;
int b[N],len;

int main(){
	while(cin>>x)a[++n]=x;
	//求最长不上升子序列 
	b[0]=2e9;//初始化为无穷大
	for(int i=1;i<=n;i++){
		if(a[i]<=b[len])b[++len]=a[i];//小则添加 
		else{
			int l=1,r=len;
			while(l<r){
				int mid=l+r>>1;
				if(a[i]>b[mid])r=mid;
				else l=mid+1;
			}
			b[l]=a[i]; 
		}
	}
	cout<<len<<endl;
	len=0;
	//求最长上升子序列
	b[0]=-2e9;
	for(int i=1;i<=n;i++){
		if(a[i]>b[len])b[++len]=a[i];
		else{
			int l=1,r=len;
			while(l<r){
				int mid=l+r>>1;
				if(b[mid]>=a[i])r=mid;
				else l=mid+1;
			}
			b[l]=a[i];
		} 
	} 
	cout<<len<<endl;
	
	return 0;
}
相关推荐
罗西的思考13 小时前
机器人 / 强化学习】HIL-SERL:人类在环驱动的具身智能进化框架
人工智能·算法·机器学习
美团技术团队16 小时前
LongCat 开源 VitaBench 2.0:长期动态智能体基准新标杆
人工智能·算法
To_OC1 天前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode
To_OC1 天前
LC 208 实现 Trie 前缀树:曾被名字劝退,写完发现是送分题
javascript·算法·leetcode
BadBadBad__AK1 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
_清歌2 天前
DSpark 深度解读:DeepSeek-V4 如何用「半自回归」把推理速度提升 85%
算法
统计实现局2 天前
SVD 的三步走:双对角化、Givens 收敛、排序
算法
躬行见万象2 天前
《VLA 系列》UniLab 强化训练 | G1 机器人 |复现
算法
统计实现局2 天前
对称不定分解(Bunch-Kaufman):为什么 Cholesky 不够用
算法