/*
题意:
给定L个整数A1,A2,...,An,按照从左到右的顺序选出尽量多的整数,
组成一个上升序列(子序列可以理解为:删除0个或者多个数,其他的数的吮吸不变)。
例如,1,6,2,3,7,5,可以选出上升子序列1,2,3,5,也可以选出1,6,7,
但前者更长,选出的上升子序列中相邻元素不能相等。
思路:
开辟一个栈,每次取栈顶元素s和读到的元素a做比较,如果a>s, 则加入栈;
如果a<s,则二分查找栈中的比a大的第1个数,并替换。 最后序列长度为栈的长度。
*/
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std; int a[]; int main()
{
int n,u,k;
while(cin>>n)
{
a[]=-;
k=;
for(int i=;i<n;i++)
{
cin>>u;
if(a[k]<u)
{
a[++k]=u;
}
else
{
int l=,r=k,mid;
while(l<=r)
{
mid=l+(r-l)/;
if(u>a[mid])
l=mid+;
else
r=mid-;
}
a[l]=u;
}
}
cout<<k<<endl;
}
}
 #include <stdio.h>
#include <string.h>
//author:YangSir
int a[];
int main(){
int n,i,max,b,num,x;
while(~scanf("%d",&n)){
num=;
a[]=-;
scanf("%d",&b);
a[]=max=b;
for(i=;i<n;i++){
scanf("%d",&b);//数组的每个值变化的过程就表示子串一个个代入
if(max<b){
max=b;
num++;
a[num]=max;//子串在增长
}
else{
x=num-;
while(a[x]>=b)
x--;
a[x+]=b;
}
max=a[num];//max可能会变
}
printf("%d\n",num);
}
return ;
}
 #include<stdio.h>
#include<algorithm>
using namespace std;
#define INF 1<<30
int main()
{
int n, a[], dp[]; while(~scanf("%d", &n))
{
for(int i=; i<n; i++)
{
scanf("%d", a+i);
dp[i] = INF;
}
for(int i=; i<n; i++)
*lower_bound(dp, dp+n, a[i]) = a[i];
printf("%d\n", lower_bound(dp, dp+n, INF)-dp);
}
return ;
}

最新文章

  1. RHEL 6.6安装桌面环境GNOME
  2. android nfc中Ndef格式的读写
  3. 去除 UINavigationController.navigationBar下方的横线
  4. maven clean deploy -Pproduction
  5. excel 导入数值变成科学记数的解决办法.
  6. 实现a标签中的各种点击(onclick)事件的方法
  7. 2012 Theory for Forward Rendering
  8. codeforces 711C C. Coloring Trees(dp)
  9. NYOJ 77 开灯问题
  10. because it is not a variable 编译错误解决方案
  11. 动态规划之插头DP入门
  12. 数据库入门之运行原始 SQL 查找
  13. scratch写的图灵机
  14. Tengine+Lua+GraphicsMagick
  15. MongDB-基础
  16. ubantu16.04安装sougou输入法
  17. vorpal 又一个方便的cli 开发包
  18. Redis字符串操作
  19. C++基础知识(1)
  20. linux中iptables的用法

热门文章

  1. Pycharm use GUP server
  2. 自组织特征映射神经网络(SOFM)
  3. 安卓app和苹果app共用一个二维码
  4. flask的信号使用
  5. springboot使用neo4j
  6. Python35之包的创建
  7. 多进程实现并发服务器(TCP)
  8. 异常:[vue/no-parsing-error] Parsing error:x-invalid-end-tag
  9. 使用querySelector添加移除style和class
  10. 将double转化成string,并保持N位小数