acwing 896 最长上升子序列II

简介: acwing 896 最长上升子序列II

找不到页面 - AcWing

#include<iostream>
#include<cstring>
#include<algorithm>
 
using namespace std ;
typedef long long LL ;
const LL N = 1e5 +10 ;
LL n ; LL a[N] ;
LL q[N] ;//用于记录当长度为i时最后结尾的数
 
int main(){
  cin >> n ;
  for(int i = 1 ; i <= n ; i ++) cin >>a[i] ;
  int len = 0 ;
    //用二分来找到当前第i个数在q数组中的 第一个大于第i个数的位置 ;
    // 找到以后对len 和 q[r+1] 进行更新 
    //为什么可以更新呢?这里用到了贪心的思想,对于每一个最长上升子序列 一定是结尾越小越好 ,而我们二分找到的就是他的直接前驱
  for(int i = 1 ; i <= n ; i ++){
    int l = 0 ,r = len ;
    while(l<r){
      int mid = l+ r+1 >> 1 ;
      if(q[mid] < a[i]) l = mid ;
      else r = mid - 1 ;
    }
    len = max(len , r+1) ;
    q[r+1] = a[i] ;
  }
  cout << len << endl ;
  return 0 ;
}
目录
相关文章
|
机器学习/深度学习 人工智能 算法
|
存储 安全 算法
密码学原理及其在网络安全中的应用
【7月更文挑战第27天】密码学作为保护信息安全的基石,在网络安全中发挥着不可或缺的作用。通过加密、解密、身份验证、数字签名和哈希函数等技术手段,密码学确保了数据的机密性、完整性和认证性。随着计算能力的不断提升和密码分析技术的不断进步,密码学需要不断创新和发展,以应对新的安全挑战。未来,随着量子计算技术的兴起和后量子密码学的研究深入,密码学将在网络安全领域发挥更加重要的作用。
|
机器学习/深度学习 算法
探索支持向量机(SVM)的奥秘:从理论到实践
探索支持向量机(SVM)的奥秘:从理论到实践
|
缓存 编解码 Go
计算机网络:可靠传输协议
计算机网络:可靠传输协议
468 1
|
弹性计算 运维 安全
访问控制(RAM)|云上程序使用临时凭证的最佳实践
STS临时访问凭证是阿里云提供的一种临时访问权限管理服务,通过STS获取可以自定义时效和访问权限的临时身份凭证,减少长期访问密钥(AccessKey)泄露的风险。本文将为您介绍产品原理,以及具体的使用步骤。
151800 5
|
SQL 分布式计算 JavaScript
利用SparkSQL读写Excel数据
利用SparkSQL读写Excel数据
499 0
|
关系型数据库 MySQL Apache
Discuz贴吧建站的搭建及维护(windows系统)
Discuz贴吧建站的搭建及维护(windows系统)
432 0
|
关系型数据库 MySQL 数据库连接
UiPath 连接 Mysql 报错: 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
UiPath 连接 Mysql 报错: 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
601 0
|
Java
SpringBoot 配置多数据源
SpringBoot 配置多数据源
188 0
uView throttle & debounce节流防抖
uView throttle & debounce节流防抖
295 0