[ACwing]896. 最长上升子序列 II
序列 II 最长 AcWing 上升
2023-09-11 14:18:49 时间
算法标签 贪心 二分
题目简叙
思路
维护一个单调栈,如果是大于栈末尾元素就插入,形成单调栈,否则就找到第一个大于的元素进行替换,通过这种方式计算最长子序列的长度
代码
#include<iostream>
using namespace std;
int n;
const int N=1e5+10;
int stk[N];//模拟单调栈
int arr[N];//数据
int cnt;
int find(int x){//找到第一个栈里数据大于X的
int l = 1, r = cnt;
while(l < r) {
int mid = l + r >> 1;
if(stk[mid] >= x) r = mid;
else l = mid + 1;
}
return l;
}
int main(){
cin>>n;
for(int i = 1; i <= n; i ++)cin>>arr[i];
stk[++cnt]=arr[1];//初始化第一个数据
for(int i = 2; i <= n; i ++)//处理之后的数据
arr[i]>stk[cnt]?stk[++cnt]=arr[i]:stk[find(arr[i])]=arr[i];//如果是大于栈末尾元素就插入,形成单调栈,否则就找到第一个大于的元素进行替换
cout<<cnt;
return 0;
}
AC记录
相关文章
- 矩阵经典题目四:送给圣诞夜的礼品(使用m个置换实现对序列的转变)
- 【BZOJ5298】[CQOI2018]交错序列(动态规划,矩阵快速幂)
- 【BZOJ4540】【HNOI2016】序列(莫队)
- 【华为OD机试真题 python】字符串子序列II【2022 Q4 | 100分】
- 【华为OD机试真题 python】 非严格递增连续数字序列【2022 Q4 | 100分】
- 【华为OD机试真题 python】乱序整数序列两数之和绝对值最小 【2022 Q4 | 100分】
- [DeeplearningAI笔记]序列模型1.5-1.6不同类型的循环神经网络/语言模型与序列生成
- Oracle数据库:oracle数据表格dmp,sql,pde格式导入与导出,视图、序列、索引等对象的导出,oracle完结,后续开启mysql的学习
- 机器学习笔记之粒子滤波(一)序列重要性采样
- [第十一届蓝桥杯省赛C++B组]整除序列
- 力扣解法汇总2389. 和有限的最长子序列
- 183、【动态规划】leetcode ——516. 最长回文子序列(C++版本)
- 10、举例让抽象具体化——栈的压入、弹出序列(python版)
- JDOJ 1946 求最长不下降子序列个数
- 华为OD机试 -DNA序列(Java) | 机试题+算法思路+考点+代码解析 【2023】
- [LeetCode]Subsets II生成组合序列
- [LeetCode] 730. Count Different Palindromic Subsequences 计数不同的回文子序列的个数
- [LeetCode] Arithmetic Slices II - Subsequence 算数切片之二 - 子序列
- [LintCode] Longest Increasing Continuous Subsequence 最长连续递增子序列
- 【bzoj3992】[SDOI2015]序列统计 原根+NTT
- leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal 从前序与中序遍历序列构造二叉树(中等)