动态规划刷题(算法竞赛、蓝桥杯)--导弹拦截(线性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;
}
相关推荐
人工智能培训16 分钟前
边缘AI与大模型轻量化:让智能跑进每一个终端
大数据·人工智能·算法·重构·生活
lengxuenong1 小时前
树状数组 · 信息学学习手册3-优化LIS
c++·学习·算法
动词ing1 小时前
【题目练习】外观数列
算法
余额瞒着我当琳1 小时前
C++11,发展历史浅谈,初始化列表和对象初始化,右值引用和移动语义
java·开发语言·c++·算法
suhan1 小时前
【数据结构】六、图:4.图的遍历(深度优先算法DFS、广度优先算法BFS)
数据结构·算法·排序算法
suhan1 小时前
【数据结构】六、图:3.十字链表、邻接多重表、边集数组
数据结构·算法·排序算法
Dola_Zou1 小时前
工商业储能系统核心策略
算法·自动化·软件工程
Tsuki_tl1 小时前
【优选算法:双指针】——复写零题解
java·c++·算法·leetcode·数组·双指针·复写零
Rain的Java大神之路2 小时前
面了上百人,我最爱问的LeetCode 1「两数之和」:能背代码的很多,能讲清“先查后存”的没几个
java·后端·算法