http://acm.hdu.edu.cn/showproblem.php?pid=1950

问题概述:输入n个整数,求出最长严格单调递增序列,n<=100000

输入样例:                                          对应输出:

1                                                          5

7

1 3 2 4 6 7 2

len数组:len[k]表示长度为k的单调递增序列中最大的那个数为len[k]

ans数组:ans[k]表示以第k个元素结尾的最长递增序列长度

例如: 1  3  2  4  6  7  2

len:    1  2  4  6  7  X  X

ans:   1  2  2  3  4  5  2

#include<stdio.h>
#include<string.h>
int a[100005], best[100005], ans[100005], len;
int Bsech(int x)
{int l, r, m;l = 0, r = len;while(l<r){m = l+(r-l)/2;if(best[m]>=x) r = m;elsel = m+1;}return l;
}int main(void)
{int T, n, i, j, pos;scanf("%d", &T);while(T--){scanf("%d", &n);for(i=1;i<=n;i++)scanf("%d", &a[i]);len = 1;best[1] = a[1], ans[1] = 1;for(i=2;i<=n;i++){if(a[i]>best[len])best[++len] = a[i], ans[i] = len;else{ pos = Bsech(a[i]);//ans[i] = pos;best[pos] = a[i];}}printf("%d\n", len);/*printf("%d", ans[1]);for(i=2;i<=n;i++)printf(" %d", ans[i]);printf("\n");*/}return 0;
}

nlogn最长单调递增相关推荐

  1. 最长单调递增子序列(时间复杂度O(nlogn))

    写在前面:仅为个人代码/总结,未必标准,仅供参考!如有错误,还望指出交流,共同进步! 最长单调递增子序列 [题目描述] 找出由n个数组成的序列中的最长单调递增子序列及其长度. [O(n*n)算法解题思 ...

  2. 最长单调递增子序列O(NlogN)算法

     O(NlgN)算法 假设存在一个序列d[1..9] ={ 2,1 ,5 ,3 ,6,4, 8 ,9, 7},可以看出来它的LIS长度为5.  下面一步一步试着找出它.  我们定义一个序列B,然后 ...

  3. 最长单调递增子序列 [转]

    [转] http://skynewborn.blog.sohu.com/66594610.html 单调子序列包含有单调递增子序列和递减子序列,不失一般性,这里只讨论单调递增子序列.首先,从定义上明确 ...

  4. 最长单调递增子序列 python_最长单调递增子序列

    前面三篇博客分别讲了贪心,递归,分治,今天就说个简单的动态规划(DP)的题目吧.在我心中DP算是比较难的算法,尤其像状态DP,树形DP,因为实力问题就说一个简单的线性DP--最长单调递增子序列. 题目 ...

  5. java最长单调递增子序列_最长单调递增子序列问题

    最长单调递增子序列问题 题目:设计一个 O( n ^ 2 )复杂度的算法,找出由 n 个数组成的序列的最长单调递增子序列. import java.util.Scanner; public class ...

  6. 输出最长单调递增子序列java_动态规划实现最长单调递增子序列

    1. 实验环境 操作系统:Mac 64 运行内存:16GB 编程语言:Java 编译环境:Eclipse 2. 题目要求 设计一个Ο(nlgn)时间的算法,求一个 n 个数的序列的最长单调递增子序列. ...

  7. 动态规划作业 最长单调递增子序列

    动态规划作业 1.最长单调递增子序列 设计一个 O(n2)时间的算法,找出由 n 个数组成的序列 a 的最长单调递增子序列. 提示: 用数组 b[0:n]纪录以 a[i] (0<= i< ...

  8. 最长单调递增子序列 动态规划 (java)

    题目描述: 设计一个O(N^2)算法,找出n个数据组成的序列的最长单调递增子序列. 输入示例: 8 1 2 3 -9 3 9 0 11 输出示例: 5 1 2 3 9 11 设计思路: 有一个数组 a ...

  9. 最长单调递增子序列--动态规划

    最长单调递增子序列定义: 问题描述: 设计一个O(n2)时间的算法, 找出由n个数组成的序列的最长单调递增子序列. 输入 第1个整数n(0<n<100),表示后面有n个数据,全部为整数. ...

最新文章

  1. WC2018集训 吉老师的军训练
  2. str、tuple、dict之间的相互转换
  3. python中matplotlib条形图数值大的在最底层显示_如何使用python的matplotlib模块绘制水平条形图...
  4. 第十天2017/04/21(2、泛型编程:模板 / 全特化、偏特化)
  5. Python中的del用法
  6. 关于API的设计和需求抽象
  7. 读《UNIX编程艺术》随记
  8. 重载VerifyRenderingInServerForm
  9. 【CSS】常用特效字
  10. leetcode题解227-基本计算器 II
  11. 实验楼python挑战答案_楼赛第1期-Linux项目挑战 题目解析
  12. es6 箭头函数后面的大括号
  13. 表单获取焦点和失去焦点
  14. 在Novell NetWare中支持IP
  15. 讲给后台程序员看的前端系列教程(17)——文本样式
  16. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数001·3D函数
  17. 面试系列-2 我终于弄清楚了redis数据结构之string应用场景
  18. 学习笔记之DNS配置(视图,日志,动态DNS)
  19. e4a java_易安卓e4a编译生成R.java文件失败的解决办法
  20. 盘点那些恶搞C++小程序

热门文章

  1. 没有计算机基础可以学python-要学 Python 需要怎样的基础?
  2. 盘点语音识别技术在人工智能中的应用
  3. 语音识别HCLG解码
  4. 数据类型以及数据类型的转换---防止忘记
  5. Vue的babel-plugin-transform-remove-console依赖使用方法
  6. element-UI:el-table 表格排序
  7. java找出最高工资和下标_Java 8 lambda用于为每个部门选择最高薪资员工
  8. 【计算机网络笔记】计算机网络定义分类
  9. LeetCode 111 二叉树的最小深度
  10. 视频主观质量评价方法