nyoj 单调递增子序列(二)
来源:互联网 发布:mac鼠标用法 编辑:程序博客网 时间:2024/04/28 01:29
http://blog.acmj1991.com/?p=767
题意:看题
思路:这题是用树状数组做的,跟poj 1631有一点区别就是数据范围更大了,我离散了一下貌似速度不是很快!!
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;#define maxN 100010int key[maxN],pre[maxN],fa[maxN];int low(int x){return x&(-x);}int max(int x,int y){return x>y?x:y;}int low_bun(int l,int r,int x){if(l==r)return l;int mid=(l+r)/2;if(x<=fa[mid])return low_bun(l,mid,x);else if(x>fa[mid])return low_bun(mid+1,r,x);}int get_max(int x){int maxx=0;while(x){maxx=max(maxx,key[x]);x-=low(x);}return maxx;}void update(int x){int m=key[x];do{x+=low(x);if(key[x]<m)key[x]=m;else break;}while(x<=maxN);}int main(){int t,n;while(~scanf("%d",&n)){int maxx=0;memset(key,0,sizeof(key));for(int i=1;i<=n;i++){scanf("%d",&pre[i]);fa[i]=pre[i];}sort(fa,fa+n);for(int i=1;i<=n;i++){int m=low_bun(1,n,pre[i]);key[m]=get_max(m-1)+1;maxx=max(maxx,key[m]);update(m);}printf("%d\n",maxx);}}
- nyoj 单调递增子序列(二)
- NYOJ 214 单调递增子序列(二)
- 单调递增子序列(二) NYOJ
- NYOJ 214 单调递增子序列(二)
- NYOJ 214 单调递增子序列二
- Nyoj 214 单调递增子序列(二)
- NYOJ 214 单调递增子序列(二)
- NYOJ 214 单调递增子序列 二
- 单调递增子序列(二)(nyoj 214)
- NYOJ 214 单调递增子序列(二)
- nyoj-214 单调递增子序列(二)
- NYOJ 214 单调递增子序列(二)
- nyoj 214单调递增子序列(二)
- NYOJ-214-单调递增子序列(二)
- NYOJ-214 单调递增子序列(二)
- NYOJ-214-单调递增子序列(二)
- nyoj 214 单调递增子序列(二)
- NYOJ 单调递增子序列(二) 南工214
- Debian lenny 安装KDE4
- More Effective C++ --- 卷首语
- Twitter:情绪的脉搏
- 如何学好C语言
- 生成全排列
- nyoj 单调递增子序列(二)
- Aptana Studio 2.0 汉化方法,支持gbk方法
- 蟾宫曲 春情
- 无options选项chmod命令简单实现
- 克隆虚拟机系统到其他电脑的问题
- c++ STL set和multiset 学习笔记
- C语言中malloc函数实现
- Oracle学习(3)多表查询
- java文件操作(普通文件以及配置文件的读写操作)