joj 2529 Chorus 动态规划 最长上升子序列和最长下降子序列
来源:互联网 发布:动漫恶搞软件 编辑:程序博客网 时间:2024/06/05 08:02
题目链接:http://acm.jlu.edu.cn/joj/showproblem.php?pid=2529
题目大意:给出一个队列的总人数和各自的身高,问最少剔除多少人才能让这个序列从左到 i 为一直增高, 从i 到 有一直变矮,相邻两个不能相等。
Sample Input
8186 186 150 200 160 130 197 220
Sample Output
4
AC程序:
#include "iostream"#include "cstring"using namespace std;#define size 110int main(){//freopen("in.txt", "r", stdin);int n, a[size], up[size], down[size], i, j, max;while(cin>>n){memset(up, 0, sizeof(up));memset(down, 0, sizeof(down));for(i = 1; i <= n; i++)cin>>a[i];//up[i]为1到i可以保留的最大人数up[1] = 1;for(i = 2; i <= n; i++){up[i] = 1;for(j = 1; j < i; j++){if(a[j] < a[i] && up[j] + 1 > up[i]){up[i] = up[j] + 1;}}}//down[i]为i到n可以保留的最大人数down[n] = 1;for(i = n - 1; i >= 1; i--){down[i] = 1;for(j = n; j > i; j--){if(a[j] < a[i] && down[j] + 1 > down[i]){down[i] = down[j] + 1;}}}max = 0;//求可以保留的最大人数for(i = 1; i <= n; i++){if(up[i] + down[i] > max)max = up[i] + down[i];}max--;//对于i算了两次,所以减1cout<<n - max<<endl;}return 0;}
- joj 2529 Chorus 动态规划 最长上升子序列和最长下降子序列
- 动态规划——求最长下降/上升子序列
- 蓝桥杯 拦截导弹 动态规划(最长下降子序列+最长上升子序列)
- 最长上升下降子序列
- 动态规划:最长上升子序列
- 动态规划-最长上升子序列LIS
- 动态规划求最长上升子序列
- 【算法】动态规划 最长上升子序列
- 动态规划:最长上升子序列
- poj2533 动态规划+最长上升子序列
- POJ2533 动态规划 (最长上升子序列)
- 动态规划--最长上升子序列
- 动态规划-最长上升子序列【LIS】
- 动态规划之最长上升子序列
- 动态规划 LIS最长上升子序列
- 动态规划-最长上升子序列
- 动态规划:求最长上升子序列
- 动态规划-最长上升子序列
- TAB子页面切换中遇到的问题
- SQLite快速入门二--表、视图的创建、修改、删除操作
- spring事务传播属性
- java数组总结
- java synchronized详解
- joj 2529 Chorus 动态规划 最长上升子序列和最长下降子序列
- 基础总结篇之三:Activity的task相关
- 例题3-9
- 字节流和字符流
- 驱动编程之异步通知
- DM
- S3C6410--DMA裸机开发实例
- 反射
- 例题3-10