dp最长不上升子序列 二分upper lower+贪心

2023-05-16

 

 题意

找出最长不上升子序列长度

再找出最长不下降子序列最大长度

写法运用了指针 减少了代码量

#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int a[N], d1[N], d2[N], n;
int main() {
    freopen("1.txt","r",stdin);
	while (cin >> a[++n]); n--;		//输入
	int len1 = 1, len2 = 1;		//初始长度为1
	d1[1] = a[1];		//用于求不上升序列长度
	d2[1] = a[1];		//用于求上升序列长度
	for (int i=2; i<=n; i++) {		//从a[2]开始枚举每个数(a[1]已经加进去了)
		if (d1[len1] >= a[i]) d1[++len1] = a[i];		//如果满足要求(不上升)就加入d1
		else {		//否则用a[i]替换d1中的一个数
			*upper_bound(d1 + 1, d1 + 1 + len1, a[i], greater<int>()) =a[i];
		}
		if (d2[len2] < a[i]) d2[++len2] = a[i];		//同上
		else {
			 *lower_bound(d2 + 1, d2 + 1 + len2, a[i]) = a[i];
		}
	}
	cout << len1 << endl << len2;		//输出
	return 0;		//结束
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dp最长不上升子序列 二分upper lower+贪心 的相关文章

  • 实习日记。。。

    第一周 第一天7 11 周一 入职第一天 xff0c 一直在数据库建表 xff0c 写了二十来个 xff0c 还有领了工卡和饭卡 xff0c 带我的老大哥请我恰了一顿 xff0c 晚上下班的时候 xff0c 因为舍不得我的电脑所以多待了一个
  • TCP/IP协议栈Lwip的设计与实现:之三

    接上文 xff1a TCP IP协议栈Lwip的设计与实现 xff1a 之二 龙赤子的博客 CSDN博客 目录 10 xff0e TCP处理 10 1概述 10 2数据结构 10 3序列号计算 10 4数据入队和传输 10 5接收段数据 1
  • c++——Unicode编码和多字节编码的区别

    1 VS项目属性不同字符集的区别 单字节字符集 xff1a 顾名思义 xff0c 单字节字符集就是用一个字节表示一个字符 xff0c 简称SBCS ASCII就是单字节字符集 在编码的过程中char类型就是单字节编码 Unicode字符集
  • 蓝桥杯 例题 切割矩形

    include lt bits stdc 43 43 h gt using namespace std int ans 61 0 int f int a int b ans 43 43 if a 61 61 1 amp amp b 61 6
  • c++——Unicode、UTF-8、UTF-16

    计算机起源于美国 xff0c 上个世纪 xff0c 他们对英语字符与二进制位之间的关系做了统一规定 xff0c 并制定了一套字符编码规则 xff0c 这套编码规则被称为ASCII编码 ASCII 编码一共定义了128个字符的编码规则 xff
  • spark MLlib之分类和回归

    MLlib支持多种方法用来处理二分分类 xff0c 多类分类以及回归分析 xff0c 下表列出了问题及对应的处理方法 xff1a 问题类型 支持的方法 二分分类 现行SVM xff0c 逻辑回归 xff0c 决策树 xff0c 贝叶斯 多类
  • 生产者消费者模型详解以及实现

    生产者消费者模式 我们先来看看什么是生产者消费者模式 xff0c 生产者消费者模式是程序设计中非常常见的一种设计模式 xff0c 被广泛运用在解耦 消息队列等场景 在现实世界中 xff0c 我们把生产商品的一方称为生产者 xff0c 把消费
  • 高频面试点:静态链接库与动态链接库

    库是写好的现有的 xff0c 成熟的 xff0c 可以复用的代码 现实中每个程序都要依赖很多基础的底层库 xff0c 不可能每个人的代码都从零开始 xff0c 因此库的存在意义非同寻常 本质上来说库是一种可执行代码的二进制形式 xff0c
  • cordova打包app热更新问题

    定义 xff1a 基于 cordova 框架能将web应用 js html css 图片等 打包成 App 当 App 在终端上安装后 xff0c 不需要重新下载app xff0c 实现内壳更新 原理 xff1a 1 在项目根目录的conf
  • 一文解决 Python读取文件的全部知识

    文件是无处不在的 xff0c 无论我们使用哪种编程语言 xff0c 处理文件对于每个程序员都是必不可少的 文件处理是一种用于创建文件 写入数据和从中读取数据的过程 xff0c Python 拥有丰富的用于处理不同文件类型的包 xff0c 从
  • 总结实验室对转录组及lncRNA数据分析的思路

    继师兄详细地讲述这个思路之后 xff0c 我进行一个归纳总结 xff08 师兄说 xff0c 首先要建立一个思想上的流程 xff0c 再来纠结软件 命令这些细节 xff01 xff01 xff01 xff01 xff01 xff01 xff
  • Android 高通7.1系统默认横屏显示(无G-sensor)

    竖屏横用 xff0c logo用的还是竖屏资源 1 添加宏控制 device qcom msm8909 system prop span class token comment add start span persist span cla
  • Android11 授权应用获取IMEI号和ICCID

    在Android11上获取IMEI号等设备信息需要android permission READ PRIVILEGED PHONE STATE权限 xff0c 而这个权限又只授予系统级应用 项目中如果targetSdkVersion值小于2
  • Enum枚举前后端传输展示方案

    1 定义枚举类型 public enum RolesTypeEnum implements Enumerator MANAGER 34 管理员 34 0 BUSINESS 34 招商员工 34 1 PROPERTY 34 物业员工 34 2
  • 蓝桥杯2018年第九届真题-递增三元组-题解(C语言代码)

    include lt bits stdc 43 43 h gt using namespace std const int MAXN 61 100005 int a MAXN b MAXN c MAXN int n sum int main
  • Altium Designer 推挤布线

    在进入交互式布线模式时按 TAB 键进入属性对话框 xff0c 在 Current Mode 参数项中选择Push Obstacles 模式 xff0c 然后点击 OK 退出设置这时将进入挤推布线模式 xff0c 它可以帮你自动移开遮挡的导
  • 范数及其意义

    什么是范数 xff1f 范数 Norm 是具有度量性质的函数 xff0c 它经常使用来衡量矢量函数的长度或大小 xff0c 是泛函分析中的一个基本概念 要更好的理解范数 xff0c 就要从函数 几何与矩阵的角度去理解 xff0c 我们都知道

随机推荐