nlogn最长单调递增
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最长单调递增相关推荐
- 最长单调递增子序列(时间复杂度O(nlogn))
写在前面:仅为个人代码/总结,未必标准,仅供参考!如有错误,还望指出交流,共同进步! 最长单调递增子序列 [题目描述] 找出由n个数组成的序列中的最长单调递增子序列及其长度. [O(n*n)算法解题思 ...
- 最长单调递增子序列O(NlogN)算法
O(NlgN)算法 假设存在一个序列d[1..9] ={ 2,1 ,5 ,3 ,6,4, 8 ,9, 7},可以看出来它的LIS长度为5. 下面一步一步试着找出它. 我们定义一个序列B,然后 ...
- 最长单调递增子序列 [转]
[转] http://skynewborn.blog.sohu.com/66594610.html 单调子序列包含有单调递增子序列和递减子序列,不失一般性,这里只讨论单调递增子序列.首先,从定义上明确 ...
- 最长单调递增子序列 python_最长单调递增子序列
前面三篇博客分别讲了贪心,递归,分治,今天就说个简单的动态规划(DP)的题目吧.在我心中DP算是比较难的算法,尤其像状态DP,树形DP,因为实力问题就说一个简单的线性DP--最长单调递增子序列. 题目 ...
- java最长单调递增子序列_最长单调递增子序列问题
最长单调递增子序列问题 题目:设计一个 O( n ^ 2 )复杂度的算法,找出由 n 个数组成的序列的最长单调递增子序列. import java.util.Scanner; public class ...
- 输出最长单调递增子序列java_动态规划实现最长单调递增子序列
1. 实验环境 操作系统:Mac 64 运行内存:16GB 编程语言:Java 编译环境:Eclipse 2. 题目要求 设计一个Ο(nlgn)时间的算法,求一个 n 个数的序列的最长单调递增子序列. ...
- 动态规划作业 最长单调递增子序列
动态规划作业 1.最长单调递增子序列 设计一个 O(n2)时间的算法,找出由 n 个数组成的序列 a 的最长单调递增子序列. 提示: 用数组 b[0:n]纪录以 a[i] (0<= i< ...
- 最长单调递增子序列 动态规划 (java)
题目描述: 设计一个O(N^2)算法,找出n个数据组成的序列的最长单调递增子序列. 输入示例: 8 1 2 3 -9 3 9 0 11 输出示例: 5 1 2 3 9 11 设计思路: 有一个数组 a ...
- 最长单调递增子序列--动态规划
最长单调递增子序列定义: 问题描述: 设计一个O(n2)时间的算法, 找出由n个数组成的序列的最长单调递增子序列. 输入 第1个整数n(0<n<100),表示后面有n个数据,全部为整数. ...
最新文章
- WC2018集训 吉老师的军训练
- str、tuple、dict之间的相互转换
- python中matplotlib条形图数值大的在最底层显示_如何使用python的matplotlib模块绘制水平条形图...
- 第十天2017/04/21(2、泛型编程:模板 / 全特化、偏特化)
- Python中的del用法
- 关于API的设计和需求抽象
- 读《UNIX编程艺术》随记
- 重载VerifyRenderingInServerForm
- 【CSS】常用特效字
- leetcode题解227-基本计算器 II
- 实验楼python挑战答案_楼赛第1期-Linux项目挑战 题目解析
- es6 箭头函数后面的大括号
- 表单获取焦点和失去焦点
- 在Novell NetWare中支持IP
- 讲给后台程序员看的前端系列教程(17)——文本样式
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数001·3D函数
- 面试系列-2 我终于弄清楚了redis数据结构之string应用场景
- 学习笔记之DNS配置(视图,日志,动态DNS)
- e4a java_易安卓e4a编译生成R.java文件失败的解决办法
- 盘点那些恶搞C++小程序