POJ——3903(最长非降子序列的另一解法)
2013-07-23 12:22
351 查看
题目地址:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26986#problem/B
借鉴链接:http://blog.csdn.net/kk303/article/details/6755816
注意:本方法是正确的,保证了长度为i的子序列末尾最小,但是数组h里面存储的不一定是所要的最长非降子序列。
源代码:
借鉴链接:http://blog.csdn.net/kk303/article/details/6755816
注意:本方法是正确的,保证了长度为i的子序列末尾最小,但是数组h里面存储的不一定是所要的最长非降子序列。
源代码:
#include<iostream> #include<algorithm> #include<stdio.h> #include<string.h> using namespace std; int t,n,s[100001],h[100001],i,j,m,p; int main() { while (cin>>n) { memset(h,0,sizeof(h)); for (i=1;i<=n;i++) scanf("%d",&s[i]); m=1; p=1;
for (i=1;i<=n;i++) { for (j=p;j>=0;j--) if (h[j]<s[i]) break; if (!h[j+1]) { p++; h[p]=s[i]; m=p; } else { if (h[j+1]>s[i]) h[j+1]=s[i]; // 更新h[i]..保证长度为i的子序列末尾最小 } } printf("%d\n",m-1); } return 0; }
相关文章推荐
- POJ 3903-Stock Exchange/POJ 2533-Longest Ordered Subsequence(LIS-最长递增子序列长度)
- poj 3903 Stock Exchange(求最长上升子序列长度)
- poj 3903 最长上升子序列,nlog(n)的算法
- poj 3903 Stock Exchange(最长上升子序列,模版题)
- POJ 3903 Stock Exchange(最长上升子序列O(n*logn)解法)
- POJ 3903 【最长递增子序列 NLOGN】
- {POJ}{3903}{Stock Exchange}{nlogn 最长上升子序列}
- POJ 1631 Bridging signals(最长上升子序列 n*logn && POJ 3903)
- poj 3903 求最长上升子序列长度
- poj 3903 最长上升子序列 Stock Exchange
- [算法] poj 3903 最长上升子序列 dp vs (二分 nlogn)
- [算法] poj 3903 最长上升子序列 dp vs (二分 nlogn)
- 证券交易所 Stock Exchange 最长上升子序列 poj 3903
- poj 3903(最长上升子序列 )
- POJ 2533 Longest Ordered Subsequence(最长上升子序列长度、O(nlogn))
- poj 1609 Tiling Up Blocks(最长不下降序列)
- 求最长连续公共子序列 POJ 3080
- POJ 1952 BUY LOW,BUY LOWER 最长递减子序列 动态规划
- [珠玑之椟]字符串和序列:左移、哈希、最长重复子序列的后缀数组解法、最大连续子序列
- POJ-1065 Wooden Sticks,排序+最长单减子序列!