UVA - 12002(特殊的LIS和LDS组合)
来源:互联网 发布:购物车程序java 编辑:程序博客网 时间:2024/05/21 15:48
#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;const int maxn = 550;int ind[maxn][2],ded[maxn][2],a[maxn],yu[maxn],pre[maxn];int n;int main(){ while(scanf("%d",&n)==1 && n){ for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } for(int i=n;i>=1;i--){ ind[i][0]=ind[i][1]=1; for(int j=i+1;j<=n;j++){ if(a[i] < a[j]){ ind[i][0] = max(ind[i][0],ind[j][1]+1); ind[i][1] = max(ind[i][1],ind[j][1]+1); } else if(a[i]==a[j]){ ind[i][1] = max(ind[i][1],ind[j][1]+1); } } } for(int i=n;i>=1;i--){ ded[i][0]=ded[i][1]=1; for(int j=i+1;j<=n;j++){ if(a[i] > a[j]){ ded[i][0] = max(ded[i][0],ded[j][1]+1); ded[i][1] = max(ded[i][1],ded[j][1]+1); } else if(a[i]==a[j]){ ded[i][1] = max(ded[i][1],ded[j][1]+1); } } } int res = 0; for(int i=1;i<=n;i++){ res = max(res,ind[i][1]+ded[i][0]-1); res = max(res,ind[i][0]+ded[i][1]-1); } printf("%d\n",res); }}
0 0
- UVA - 12002(特殊的LIS和LDS组合)
- UVa 10534 Wavio Sequence (LIS、LDS)
- POJ 1836 Alignment(LIS和LDS的结合题)
- LIS,LDS的另类算法(转载)
- uva 12002 - Happy Birthday(LIS)
- 最长上升子序列(LIS)和最长下降子序列(LDS)
- LCS,LIS(王子和公主,uva 10635)
- UVA 12002 Happy Birthday(dp+LIS)
- (组合数学3.3.2.2)UVA 10497 - Sweet Child Makes Trouble(特殊的排列问题——错排方案数)
- Uva 10635 王子和公主(LCS转LIS+二分)
- 类UNIX的特殊按键组合
- 特殊的组合问题(基础部分)
- 特殊的组合问题(另外一种解法)
- UVA 10534 DP+LIS
- UVA 10354 nlogn LIS
- uva 11456 - Trainsorting(LIS)
- UVA - 10192Vacation(LIS)
- uva 10635 nlogn LIS
- 关闭selinux
- Object-C详细编程教(五)-手动内存管理
- 字符编码笔记:ASCII,Unicode和UTF-8
- 如何使用Android MediaStore裁剪大图片
- [boost] regex c++正则表达式
- UVA - 12002(特殊的LIS和LDS组合)
- SAP EWM中仓库任务WT创建的函数
- No Matching Security Types
- Linux驱动下的platform总线架构(转)
- 关闭Aero Shake节约系统资源的方法
- 贪心法与动态规划
- Difference between ArrayList and Vector In java
- Codeforces Round #283 (Div. 2) D Tennis Game ——枚举,二分
- 求解?Android自定义下拉,为什么只能获取到第一个控件的焦点了