poj 2533 o(nlgn)做法
来源:互联网 发布:淘宝银饰品店铺介绍 编辑:程序博客网 时间:2024/05/17 21:54
反正这个很奇妙,感觉不像是动态规划了……
一个数组记录原来序列,一个数组记录长度为i的最长上升序列的结尾值是多少。
因为查找的是时候是二分查找,所以平均复杂度由传统的O(n^2)变成了O(nlogn).
AC代码:
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;const int maxn=5e4+10;int num[maxn];int n;const int inf=1e9+10;int value[maxn];//长度为i的最长上升序列的结尾值是多少。int main(){while(scanf("%d",&n)==1&&n) { fill(value,value+n+1,inf); //memset(value,0x3f,sizeof(value)); for(int i=1;i<=n;i++) scanf("%d",&num[i]); int ans=-1; for(int i=1;i<=n;i++) { int len=lower_bound(value+1,value+1+n,num[i])-value;//取其长度 if(ans<len)//更新ans ans=len; value[len]=num[i]; } printf("%d\n",ans); }}
阅读全文
0 0
- poj 2533 o(nlgn)做法
- POJ 1631 Bridging signals(最长上升子序列 nlgn做法)
- 最长不下降子序列 (nlgn)做法
- hdu 5748 && poj 2533 最长上升子序列(o(nlogn)做法)
- 堆排序 O(nlgn)
- POJ 3670 Eating Together 二分解法O(nlgn)和O(n)算法
- 求最长上升/下降子序列【O(nlgn)】
- UESTC 251 最长上升子序列O(nlgn)
- hdu 1394 逆序对(nlgn+o(n) )
- 最长递增子序列(二分法O(nlgn))
- 逆序对问题 (O(nlgn))
- uva10635(lcs lis O(NlgN))
- POJ 1631(O(nlogn)LIS的2种做法)
- POJ 1950(不打表做法)
- poj Coins (bitset做法)
- 寻找逆序对的算法,要求运行时间为O(nlgn),算法导论答案
- hdoj-1025===最长非降子序列(O(nlgn))
- 最长单调递增子序列( O(nlgn) )
- Shader相关Mask裁切UI粒子特效或者3D模型
- git命令图
- 语义网简介(三)—RDF与RDF Schema
- 通讯录动态版本
- H5
- poj 2533 o(nlgn)做法
- boost分类
- 2.2 Unity面向组件
- SQLSERVER游标及循环语句
- 图集分配透明与不透明打包不到一起的错误
- 图集与使用
- 第六章 Realm及相关对象(二) AuthenticationToken
- 2017ROS暑期学校笔记
- 游标嵌套游标的SQL