动态规划刷题(算法竞赛、蓝桥杯)--导弹拦截(线性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;
}
相关推荐
iCxhust6 分钟前
在 emu8086 中可以直接编译运行的完整汇编程序,演示数组的定义、遍历、求和、求最大值。
开发语言·前端·javascript·汇编·单片机·嵌入式硬件·算法
Jinkxs14 分钟前
LoadBalancer- 常见负载均衡算法:轮询 / 加权轮询 / 最少连接等基础实现
运维·算法·负载均衡
Brilliantwxx26 分钟前
【C++】认识vector(概念+题目OJ)
开发语言·c++·笔记·算法
生成论实验室1 小时前
《事件关系阴阳博弈动力学:识势应势之道》第十篇:识势应势——从认知到行动的完整闭环
人工智能·算法·架构·创业创新·安全架构
risc1234561 小时前
SegmentTermsEnum#postings 和 IntersectTermsEnum#postings
算法·lucene
阿Y加油吧1 小时前
二刷 LeetCode:两道经典贪心题复盘
算法·leetcode·职场和发展
顺顺 尼1 小时前
程序地址空间和进程的一些操作
算法
Java成神之路-1 小时前
【LeetCode 刷题笔记】35. 搜索插入位置 | 二分查找经典入门题
算法·leetcode
MediaTea11 小时前
AI 术语通俗词典:C4.5 算法
人工智能·算法
Navigator_Z12 小时前
LeetCode //C - 1033. Moving Stones Until Consecutive
c语言·算法·leetcode