LIS O(nlgn)最简写法
来源:互联网 发布:金税盘开票软件更新 编辑:程序博客网 时间:2024/06/03 22:51
挑战上一个LIS的写法真的好短,,,
利用了STL的fill,lower_bound
1.这里注意fill,memset的区别
memset是按字节填充的,初始化的时候只能初始化为0,-1,不能为1或其他
例如当memset int 初始化为1时,则为
(1<<24)+(1<<16)+(1<<8)+1=16843009
fill是把某一区域赋值
2.lower_bound:找出第一个a[i]<=k的值
upper_bound:找出第一个a[i]>k的值
求长度为n的有序数组a中k的个数:upper_bound(a,a+n,k)-lower_bound(a,a+n,k)
#include<stdio.h>#include<string.h>#include <iostream>#include <algorithm>using namespace std;const int INF=99999999;int dp[100],a[100];int n;void solve(){ fill(dp,dp+n,INF); for(int i=0;i<n;i++) *lower_bound(dp,dp+n,a[i])=a[i]; cout<<lower_bound(dp,dp+n,INF)-dp;}int main(){ cin>>n; for(int i=0;i<n;i++) cin>>a[i]; solve(); return 0;}
0 0
- LIS O(nlgn)最简写法
- uva10635(lcs lis O(NlgN))
- 最长上升子序列LIS O(nlgn)算法
- zoj2136 最长上升子序列LIS O(NlgN)解法
- LIS(nlgn) DP
- UVa1471 LIS变种 nlgn
- 堆排序 O(nlgn)
- oracle分页最简写法
- uva 10534 - Wavio Sequence(nlgn复杂度LIS)
- 逆序对问题 (O(nlgn))
- 最长单调递增子序列( O(nlgn) )
- 逆序数 时间复杂度O(nlgn)
- 最长单调递增子序列( O(nlgn) )
- SortList 单链表排序 要求复杂度O(NlgN)
- 归并排序(时间复杂度O(nlgn)(最坏))
- LintCode -- 最长上升子序列 O(nlgn)
- 求a^n的O(nlgn)算法
- poj 2533 o(nlgn)做法
- Maven全解
- Hadoop Shell 讲解
- C#动态创建类实例并调用
- System获取时间函数代码
- 经典排序算法(6)——直接选择排序算法详解
- LIS O(nlgn)最简写法
- eclipse下,tomact jar包存在 但是无法解析导入 javax.servlet 的问题与解析
- 【springmvc (六)】 使用log4j 日志
- 2015-2016年全国计算机专业大学排名
- HBase源码分析之Region定位
- QQ音乐与网易云音乐的比较
- 经典排序算法(7)——堆排序算法详解
- 建筑公司员工财务数据库分析
- cocoa touch框架UIkit学习