POJ——3903(最长非降子序列的另一解法)
来源:互联网 发布:ubuntu查看系统分区 编辑:程序博客网 时间:2024/06/14 17:06
题目地址:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26986#problem/B
借鉴链接: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(最长非降子序列的另一解法)
- 最长公共子序列(LCS问题)的DP解法
- 最长子序列的更优解法
- 最长公共子序列的NlogN解法
- 最长回文子序列的java解法
- poj 1036 Gangster -- 最长上升子序列解法
- POJ 3903 —— Stock Exchange 最长上升子序列
- poj 3903(最长上升子序列 )
- 最长公共子序列(LCS)问题(非连续子序列)的两种解法
- 最长公共子序列(LCS)问题(连续子序列)的三种解法
- 最长公共子序列(LCS)问题(非连续子序列)的两种解法
- 最长公共子序列的另一类优化方法
- Stock Exchange (POJ 3903) —— 最长上升子序列
- 最长子序列一种解法
- 每日三题-Day5-A(POJ 2533 Longest Ordered Subsequence 最长上升子序列O(nlogn)解法)
- 最长不降子序列的NlogN的解法
- 最长公共上升子序列(LCIS)问题的O(n^2)解法
- 最长上升子序列问题的几种解法
- 条款5:对应的new和delete要采用相同的形式 (第二章 内存管理)
- NVelocity标签使用详解
- linux find命令
- 条款6:析构函数里对指针成员调用delete
- PHP读取MySQL数据代码
- POJ——3903(最长非降子序列的另一解法)
- udev规则
- 条款7:预先准备好内存不够的情况
- 条款8:写operator new和operator delete时要遵循常规
- 安卓开发-加载图片
- Android 仿网易新闻v3.5:上下滑动的引导页
- 条款9:避免隐藏标准形式的new
- 条款10:如果写了operator new就要同时写operator delete
- linux_shell脚本