AcWing 896. 最长上升子序列 II
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main(void) {
int n;
cin >> n;
vector<int>arr(n);
for (int i = ; i < n; ++i)
cin >> arr[i];
vector<int>stk;//模拟堆栈
stk.push_back(arr[]);
for (int i = ; i < n; ++i) {
if (arr[i] > stk.back())//如果该元素大于栈顶元素,将该元素入栈
stk.push_back(arr[i]);
else//替换掉第一个大于或者等于这个数字的那个数
*lower_bound(stk.begin(), stk.end(), arr[i]) = arr[i];
}
cout << stk.size() << endl;
return ;
}
#include <iostream>
#include <algorithm>
using namespace std;
const int N = ;
int n;
int a[N];
int q[N];//所有不同长度下上升序列的结尾的最小值(也就是,第一个数的最小)
int main() {
scanf("%d", &n);
for (int i = ; i < n; i ++ ) scanf("%d", &a[i]);
int len = ;//q里面的元素个数 ,最开始为0,一个都没有
q[] = -2e9;
for (int i = ; i < n; i ++ ) {//枚举每个数字
int l = , r = len;
while (l < r) { //二分出来小于a[i] 之前的 数字中最大的数字
int mid = l + r + >> ;
if (q[mid] < a[i]) l = mid;
else r = mid - ;
}
len = max(len, r + );//r找的是可以接在哪个长度的后面
q[r + ] = a[i];
}
printf("%d\n", len);
return ;
}
AcWing 896. 最长上升子序列 II的更多相关文章
- AcWing 895. 最长上升子序列
//设上升序列的最后一个数字为第i个,那么就以第i-1个位分类标准, //i-1可以没有,也可以是在数组中下标为1,下标为2 //一直到下标为i-1的数字 #include <iostream& ...
- AcWing 897. 最长公共子序列
#include <iostream> #include <algorithm> using namespace std; ; int n, m; char a[N], b[N ...
- lintcode 最长上升连续子序列 II(二维最长上升连续序列)
题目链接:http://www.lintcode.com/zh-cn/problem/longest-increasing-continuous-subsequence-ii/ 最长上升连续子序列 I ...
- Java实现 LeetCode 522 最长特殊序列 II(查找最长的非子序列的长度)
522. 最长特殊序列 II 给定字符串列表,你需要从它们中找出最长的特殊序列.最长特殊序列定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列). 子序列可以通过删去字符串中的某些 ...
- UVA10599:Robots(II)(最长上升子序列)
Your company provides robots that can be used to pick up litter from fields after sporting events an ...
- [ACM] hdu 1025 Constructing Roads In JGShining's Kingdom (最长递增子序列,lower_bound使用)
Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- P1439 【模板】最长公共子序列
题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列. 输入输出格式 输入格式: 第一行是一个数n, 接下来两行,每行为n个数,为自然数1-n的一个排列. 输出格式: 一个数,即最长公共子 ...
- [HAOI2007]上升序列(最长上升子序列)
题目描述 对于一个给定的 S=\{a_1,a_2,a_3,…,a_n\}S={a1,a2,a3,…,an} ,若有 P=\{a_{x_1},a_{x_2},a_{x_3},…,a_{x_m}\ ...
- HDOJ1025(最长上升子序列)
Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
随机推荐
- 什么是json? 什么是xml?JSON与XML的区别比较
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.它是基于 JavaScript Prog ...
- lvs使用进阶
之前lvs基础篇(https://www.cnblogs.com/ckh2014/p/10855002.html)中介绍了lvs-dr的搭建,下面我们再复习一下,架构如下: 相关配置 director ...
- ArcMap 导入自定义样式Symbols
管网的图例里有一些自定义的样式,这些在ArcMap中找不到,找到的也不合适,所以只能自己动手制作. 1. 菜单 Customize --> Style Manager 2 . 创建新的Style ...
- selenium--find_element_by_xpath()方法汇总
一.从根目录/开始 有点像Linux的文件查看,/代表根目录,一级一级的查找,直接子节点,相当于css_selector中的>号/html/body/div/p 二.根据元素属性选择: 查找具体 ...
- pip问题:Traceback (most recent call last): File "/usr/bin/pip", line 9, in
源作者blog https://blog.csdn.net/vmxhc1314/article/details/81869676 编辑提示的文件,进行更改即可. 解决方法: 将 /usr/bin/pi ...
- 图灵,咕泡,鲁班学院--Java高级架构师-互联网企业级实战VIP课程(价值6380)
课程介绍: 讲课内容涉及Java互联网技术工程框架.应用框架. 性能调优 (Tomcat Nginx JVM) 分布式框架(并发编程 Zookeeper N ...
- CodeForces 1144B
原题https://vjudge.net/problem/CodeForces-1144B #include<bits/stdc++.h> using namespace std; vec ...
- 栈和队列----最大值减去最小值小于等于num的子数组的数量
最大值减去最小值小于等于num的子数组的数量 给定数组arr和整数 num,共返回有多少个数组满足下列情况: max(arr[i..j])-min(arr[i..j])<=num.其中max(a ...
- Introduction to Writing Functions in R
目录 在R中编写函数 args(函数名) 创建一个函数的步骤 1.default args Passing arguments between functions Checking arguments ...
- go语言 实现哈希算法
验证结果网址 http://www.fileformat.info/tool/hash.htm "golang.org/x/crypto/md4"不存在时,解决方法: cd $GO ...