51nod 1134 最长递增子序列
2016-08-17 20:32
344 查看
1134 最长递增子序列
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
给出长度为N的数组,找出这个数组的最长递增子序列。(递增子序列是指,子序列的元素是递增的)
例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10。
Input
第1行:1个数N,N为序列的长度(2 <= N <= 50000)
第2 - N + 1行:每行1个数,对应序列的元素(-10^9 <= S[i] <= 10^9)
Output
输出最长递增子序列的长度。
Input示例
8
5
1
6
8
2
4
5
10
Output示例
5
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
给出长度为N的数组,找出这个数组的最长递增子序列。(递增子序列是指,子序列的元素是递增的)
例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10。
Input
第1行:1个数N,N为序列的长度(2 <= N <= 50000)
第2 - N + 1行:每行1个数,对应序列的元素(-10^9 <= S[i] <= 10^9)
Output
输出最长递增子序列的长度。
Input示例
8
5
1
6
8
2
4
5
10
Output示例
5
#include<stdio.h> #include<algorithm> using namespace std; #define INF 0x3f3f3f3f int a[50010],dp[50010]; int main() { int n,i,k,ans; while(~scanf("%d",&n)) { for(i=1;i<=n;i++) { scanf("%d",&a[i]); dp[i]=INF; } ans=0; for(i=1;i<=n;i++) { k=lower_bound(dp+1,dp+1+n,a[i])-dp; dp[k]=a[i]; ans=max(ans,k); } printf("%d\n",ans); } return 0; }
相关文章推荐
- LeetCode 134. Gas Station
- 学习webserver笔记
- linux相关应当尽量避免的命令,操作及设置
- 常见修改对应文件
- FZU 1627 Revival's road
- RecyclerView
- provider:命名管道提供程序,error:40 - 无法打开到SQL Server的连接 (Microsoft SQL Server, 错误:53) .
- 【备战NOIP2012图论专项模拟试题】砍树
- shell 脚本之 for,while,until
- zzuli oj 1918(二分图匹配)
- ubuntu zabbix 迁移mysql到新硬盘
- 完美网络
- Pro Android学习笔记(一五四):传感器(4):陀螺仪、加速传感器
- 图结构练习——最小生成树(克鲁斯卡尔)
- 比较规矩的图片瀑布流
- hibernate Criteria中or和and的用法
- inteview que2
- mac合并sublime窗口
- ACdream 1083 人民城管爱人民
- linux--wget命令