UVA 10534 - Wavio Sequence(自写set<node>优化o(n^2)dp)
来源:互联网 发布:网络捕鱼游戏平台 编辑:程序博客网 时间:2024/05/17 06:10
本题从后往前和从前往后分别求一遍LIS;
朴素LIS的dp算法为o(n^2)用,set<node> node里结点先按高度排,再按该结点最大LIS 长度排序;动态维护每个H 下的最大LIS;并删除相对较劣元素
#include<cstdio>#include <vector>#include<cstring>#include<iostream>#include <set>#include <algorithm>using namespace std;#define INF 1000000;const int maxn = 10010;struct node{int H,premax;node(int x=0,int y=0):H(x),premax(y){}bool operator <(const node& rhs) const{return H < rhs.H||H == rhs.H && premax < rhs.premax;}};set<node> V1;set<node> :: iterator p,p1,p2,p3;int a[maxn],n,pd[maxn],sd[maxn],ta[maxn];int main(){ while(scanf("%d",&n)==1){ for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1,j=n;i<=n;i++,j--) ta[j]=a[i]; pd[1]=1; V1.clear(); V1.insert(node(a[1],pd[1])); for(int i=2;i<=n;i++){ p=V1.lower_bound(node(a[i],0)); if(p!=V1.begin()) { p1=p; p1--; pd[i]=p1->premax+1; } else pd[i]=1; if(p!=V1.end()){ p2=p; for(;;){ if(p2==V1.end()) break; if(p2->premax > pd[i]) break; else { p1=p2++; V1.erase(p1); } } } V1.insert(node(a[i],pd[i])); } sd[1]=1; V1.clear(); V1.insert(node(ta[1],sd[1])); for(int i=2;i<=n;i++){ p=V1.lower_bound(node(ta[i],0)); if(p!=V1.begin()) { p1=p; p1--; sd[i]=p1->premax+1; } else sd[i]=1; if(p!=V1.end()){ p2=p; for(;;){ if(p2==V1.end()) break; if(p2->premax > sd[i]) break; else { p1=p2++; V1.erase(p1); } } } V1.insert(node(ta[i],sd[i])); } for(int i=1,j=n;i<j;i++,j--){int temp=sd[i]; sd[i]=sd[j]; sd[j]=temp;} int RES=1; for(int i=1;i<=n;i++){ int num=min(pd[i],sd[i]); RES=max(RES,num*2-1); } printf("%d\n",RES); } return 0;}
0 0
- UVA 10534 - Wavio Sequence(自写set<node>优化o(n^2)dp)
- uva 10534 - Wavio Sequence (dp)
- UVA 10534 Wavio Sequence (波浪DP,4级)
- uva 10534 Wavio Sequence | dp
- Wavio Sequence - UVa 10534 dp
- UVA 10534 - Wavio Sequence(DP)
- Wavio Sequence +uva+最长升子序列dp(n*log(n))
- UVA 10534 Wavio Sequence(LIS O(nlogn))
- UVa 10534 Wavio Sequence (LIS、LDS)
- UVA - 10534Wavio Sequence(LIS)
- UVA 10534Wavio Sequence(LIS)
- UVA 10534 Wavio Sequence(LIS)
- UVA 10534-Wavio Sequence(LIS)
- UVA 10534 Wavio Sequence(dp + LIS)
- UVA 10534 - Wavio Sequence(经典dp)
- UVA - 10534 Wavio Sequence LIS 二分+DP
- UVA 10534--Wavio Sequence+二分+DP
- UVA 10534 Wavio Sequence DP(LIS+二分)
- 从用户体验的6大点来分析优化
- ubuntu14.04 编译安装highpoint rocketraid 2720驱动
- REST风格的软件架构
- 垃圾链接的形式和预防常规做法
- MongoDB资料汇总专题
- UVA 10534 - Wavio Sequence(自写set<node>优化o(n^2)dp)
- 【自考】网络经济与企业管理(三)——考后总结
- C语言中宏与单井号(#)和双井号(##)的用法
- 决定关键词排名两个因素
- 『IOS』应用内(in-app purchase)付费相关记录
- Mac OS--Yosemite拨打电话
- 外链拓展思路
- C#连接oracle数据库步骤
- 交换友情链接需要注意哪些事项