hrbust 1835 最长递增子序列【nlogn】
来源:互联网 发布:域名和服务器怎么绑定 编辑:程序博客网 时间:2024/06/05 18:25
最长递增子序列Time Limit: 1000 MSMemory Limit: 32768 KTotal Submit: 331(110 users)Total Accepted: 143(101 users)Rating: Special Judge: NoDescription
给出一个数字序列求其最长的递增子序列例如序列(1,7,3,5,9,4,8).
(1,7)和(3,4,8)是其递增子序列但其最长的递增子序列是(1,3,5,8)。
本题有多组测试数据,对于每组测试数据第一行是一个整数n(n<=100)代表序列长度。
第二行是n个整数。
Output最长递增子序列长度Sample Input7
1 7 3 5 9 4 8
Sample Output4思路:
求一个最长递增子序列,n^2的dp容易在某些题中被卡,所以我们这次来用nlogn解。
Ac代码:
#include <iostream>#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;int a[1000000],b[1000000],c[1000000];int find(int *a,int len,int n)//若返回值为x,则a[x]>=n>a[x-1]{ int left=0,right=len,mid=(left+right)/2; while(left<=right) { if(n>a[mid]) left=mid+1; else if(n<a[mid]) right=mid-1; else return mid; mid=(left+right)/2; } return left;}void fill(int *a,int n){ for(int i=0; i<=n; i++) a[i]=1000000010;}int main(){ int n,i,j; while(~scanf("%d",&n)) { fill(c,n+1); for(i=0; i<n; i++) { scanf("%d",&a[i]); } c[0]=-1;// …………………………………1 c[1]=a[0];// …………………………2 b[0]=1;// …………………………………3 for(int i=1; i<n; i++) // ………………4 { j=find(c,n+1,a[i]);// …………………5 c[j]=a[i];// ………………………………6 b[i]=j;//……………………………………7 } int output=0; for(int i=0; i<n; i++) { if(b[i]>output)output=b[i]; } printf("%d\n",output); }}
0 0
- hrbust 1835 最长递增子序列【nlogn】
- 最长递增子序列 nlogn
- 最长递增子序列 nlogn
- 最长递增子序列 nlogn
- Hrbust 1835 最长递增子序列(dp)
- 模板[最长递增子序列] O(nlogn)
- 最长递增子序列 O(NlogN)算法
- 最长递增子序列 O(NlogN)算法
- 最长递增子序列 O(nlogn)
- 最长递增子序列 O(NlogN)算法
- 最长递增子序列 O(NlogN)算法
- 最长递增子序列O(NlogN)
- 最长递增子序列-O(NlogN)
- 最长递增子序列 O(NlogN)算法
- 单调递增最长子序列 O(nlogn)
- 最长递增子序列 O(NlogN)算法
- 最长递增子序列 O(NlogN)算法
- O(nlogn)最长递增子序列
- Django博客开发(十三)—一个简单的站内搜索
- UML常见关系图,依赖、关联等
- 多线程 —— 使得代码更加合理、优雅
- 基于Spring + Spring MVC + Mybatis 高性能web构建
- POJ2559——Largest Rectangle in a Histogram(栈的应用)
- hrbust 1835 最长递增子序列【nlogn】
- 自主创建Camera照相机
- PopUpWindow使用详解(一)——基本使用
- 语音合成完整版
- 数据结构之排序
- 【redis 基础篇四】集群的搭建
- ahaha ahaha signal
- 深度学习21天实战Caffe学习笔记--深度学习工具汇总
- tpc三次握手和四次断开