最长上升子序列LIS
来源:互联网 发布:python except as 编辑:程序博客网 时间:2024/05/20 18:43
给定一列数,求最长上升子序列的长度。
O(n^2)的算法大家都会吧。这里介绍一种时间复杂度较低的算法(我也不会算时间复杂度,反正很低)。
我们可以维护一个单调。。。数组吧。若这个数比数组最后一个数大,将它加入数组,长度++;
else替换最早比它大的数。。
讲解就完了,上代码:
#include<algorithm>#include<iostream>#include<cstdio>using namespace std;int n,m,a[1005],b[1005];int bin(int x){ int l=1,r=m; while(l<r) { int mid=(l+r)/2; if(x<=b[mid]) r=mid; else l=mid+1; } return l;}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",a+i); for(int i=1;i<=n;i++) { if(a[i]>b[m]) b[++m]=a[i]; else { int pos=bin(a[i]); b[pos]=a[i]; } } printf("%d\n",m); return 0;}
0 0
- 最长上升子序列LIS
- 最长上升子序列LIS
- 最长上升子序列(LIS)
- 最长上升子序列 LIS
- 最长上升子序列(LIS)
- LIS最长上升子序列
- 最长上升子序列 LIS
- 最长上升子序列LIS
- LIS最长上升子序列
- 最长上升子序列LIS
- LIS 最长上升子序列
- 最长上升子序列LIS
- LIS(最长上升子序列)
- LIS 最长上升子序列
- lis 最长上升子序列
- LIS-最长上升子序列
- 最长上升子序列(LIS)
- 最长上升子序列LIS
- 开博记
- Dll注入技术之APC注入
- 【华为OJ】求int型数据在内存中存储时1的个数
- 遍历文件夹下所有文件
- linux③
- 最长上升子序列LIS
- 自动识别设备跳转手机页面代码
- Ubuntu13.10下配置samba实现文件夹共享最新版
- JavaScript学习
- 自动化测试--初始印象
- DLL注入技术之输入法注入
- Android NFC相关资料之MifareClassic卡(读写)
- Ubuntu安装Microsoft Windows Fonts微软字体库
- 【Android自助餐】Handler消息机制完全解析(二)MessageQueue的队列管理