南阳理工OJ 单调递增子序列(二)
2017-10-07 21:35
246 查看
单调递增子序列(二)
时间限制:1000 ms | 内存限制:65535 KB难度:4
描述
给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长子序列,并求出其长度。
如:1 9 10 5 11 2 13的最长单调递增子序列是1 9 10 11 13,长度为5。
输入有多组测试数据(<=7)
每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的下一行里有n个整数,表示数列中的所有元素.每个整形数中间用空格间隔开(0<n<=100000)。
数据以EOF结束 。
输入数据保证合法(全为int型整数)!输出对于每组测试数据输出整形数列的最长递增子序列的长度,每个输出占一行。样例输入
7 1 9 10 5 11 2 13 2 2 -1
样例输出
5 1
来源[521521]改编上传者
ACM_赵铭浩
思路:
用到STL中lower_bound
从一开始
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
using namespace std;
#define INF 0x3f3f3f3f
int s[100005];
int main()
{
int n;
cin.sync_with_stdio(false);
while(cin>>n)
{
memset(s,-INF,sizeof(s));
int len=0;
for(int i=0;i<n;i++)
{
int k;
cin>>k;
int f=lower_bound(s+1,s+len+1,k)-s;
s[f]=k;
if(f>len)
len=f;
}
cout<<len<<endl;
}
return 0;
}
相关文章推荐
- 南阳理工OJ_题目17 单调递增最长子序列
- 【南阳理工】 17 单调递增最长子序列 【模板】
- 南阳理工:单调递增最长子序列
- 经典代码 南阳 oj 单调(递减)递增最长子序列
- 单调递增子序列(二) 南阳理工214 二分查找
- 单调递增最长子序列(南阳理工ACM)
- 单调递增最长子序列(南阳oj17)(经典dp)
- NYOJ 17.单调递增最长子序列(动态规划)
- nyoj-214-单调递增子序列(二)
- 单调递增子序列(二)(n*logn)
- nyoj 214 单调递增子序列 二 最优解
- NY--17 -- 单调递增最长子序列 [经典DP]
- nyoj44 nyoj17 HDU1087 DP动规 连续字符串的和最大值 单调递增最长子序列 单调递增子序列最小个数 非连续最大递增子序列
- POJ1065 Wooden Sticks(贪心+动态规划——单调递减或递增序列)
- 单调递增子序列(二)
- 单调递增最长子序列(一)
- 单调递增最长子序列(LIS)
- nyist 单调递增最长子序列
- NYOJ-17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列