1281:最长上升子序列

时间限制: 1000 ms         内存限制: 65536 KB
提交数: 15871     通过数: 8180

【题目描述】

一个数的序列bibi,当b1<b2<...<bSb1<b2<...<bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,...,aN)(a1,a2,...,aN),我们可以得到一些上升的子序列(ai1,ai2,...,aiK)(ai1,ai2,...,aiK),这里1≤i1<i2<...<iK≤N1≤i1<i2<...<iK≤N。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。这些子序列中最长的长度是4,比如子序列(1,3,5,8)。

你的任务,就是对于给定的序列,求出最长上升子序列的长度。

【输入】

输入的第一行是序列的长度N(1≤N≤1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000。

【输出】

最长上升子序列的长度。

【输入样例】

7
1 7 3 5 9 4 8

【输出样例】

4

【分析】

算法思想:请见

https://www.bilibili.com/video/BV1ni4y1u7uX?from=search&seid=2791451597285109637&spm_id_from=333.337.0.0

设f[i]表示以a[i]结尾的最长上升子序列。

(1)阶段:子序列结尾的位置,即 i 。

(2)状态:j=1...i,f[j]序列中的每个值都是状态。

(3)决策:a[i]是否加到序列中?

(4)策略:最大化上升子序列长度。

(5)状态转移方程:

(6)边界:f[1...n]=1

(7)目标:max(f[i])

#include <stdio.h>
#define MAXN 1010
int a[MAXN],f[MAXN];  //f[i]表示以a[i]为结尾的最长上升子序列的长度
int max(int x,int y)
{return x > y ? x : y;
}
int main()
{int n;int i,j,ans=1;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&a[i]);f[i]=1;     // 初始化f[i]}// 动态更新f[i]for(i=2;i<=n;i++){for(j=1;j<i;j++){if(a[i]>a[j])f[i]=max(f[i],f[j]+1);}ans=max(ans,f[i]);}printf("%d\n",ans);return 0;
}

信息学奥赛一本通(C++版)在线评测系统

信息学奥赛一本通(1281:最长上升子序列)相关推荐

  1. 信息学奥赛一本通 1285:最大上升子序列和 | OpenJudge NOI 2.6 3532:最大上升子序列和

    [题目链接] ybt 1285:最大上升子序列和 OpenJudge NOI 2.6 3532:最大上升子序列和 [题目考点] 1. 动态规划:线性动规 最大上升子序列和 [解题思路] 1. 确定状态 ...

  2. 信息学奥赛一本通 1263:【例9.7】友好城市

    [题目链接] ybt 1263:[例9.7]友好城市 [题目考点] 1. 动态规划:线性动规 2. 排序 [解题思路] 该题可以抽象为两条平行线上各有若干点,给定一些两条线上点之间的连线,在选出连线不 ...

  3. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  4. 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...

  5. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  6. 信息学奥赛一本通 1278:【例9.22】复制书稿(book) | 洛谷 P1281 书的复制

    [题目链接] ybt 1278:[例9.22]复制书稿(book) 洛谷 P1281 书的复制 [题目考点] 1. 动态规划:线性动规 [解题思路] 该题可以抽象为:将由m个数字构成的序列分成k个子段 ...

  7. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  8. 信息学奥赛一本通在线提交地址

    信息学奥赛一本通 1 C++语言入门 1.1 综合 1.1.1 P1458 地球人口承载力估计 正确: 770 提交: 1794 比率: 42.92 % 1.1.2 P1686 Hello, Worl ...

  9. 信息学奥赛一本通 第五版(C++版)

    信息学奥赛一本通 第五版(C++版)第一部分 C++语言 第一章 C++语言入门 第二节 C++语言程序设计 P15 1. 编写一个能够输出Hello,World!的程序,这个程序常常作为一个初学者接 ...

最新文章

  1. 字符串面试题(一)字符串逆序
  2. 微信公众平台如何启用开发模式
  3. 关于IE某些原因导致下拉列表弹出阻止窗口的解决办法
  4. Javascript 函数详解
  5. python表格数据的储存和读取_python读取表格存储
  6. UIScrollView的简单使用
  7. 世界三大粮食·水稻稻米十大生产国 国稻种芯百团计划行动
  8. 如何对客户行为进行数据分析?
  9. P4556 [Vani有约会]雨天的尾巴(树上的差分+线段树的启发式合并)
  10. 《三体》死神永生之感
  11. 吐血推荐30个高质量但免费的自学网站,错过了就是亏大了!!!
  12. abaqus .cae文件默认程序设置
  13. 提取Windows主题中的图片
  14. android ListView中含有按钮事件实时更新ListView数据案例-1
  15. 动态SQL中if标签:test判断的null和“ “的问题
  16. Redis报错:WRONGTYPE Operation against a key holding the wrong kind of value;解决办法
  17. 比尔总动员日常任务攻略一
  18. 进程fork和exec ---Unix网络编程笔记
  19. 机器学习(1)一文带你看懂显卡,显卡驱动,CUDA,CUDNN(内含举例)
  20. python 判断并记录1000以内素数的个数及具体数值

热门文章

  1. 行货好还是水货好?详解苹果iPhone5版本选购 --国行、港行、水货、合约机
  2. STM32之RTC原理
  3. 官方确认:新增一所“双一流”大学
  4. 数据统计告诉你,程序员是不是35岁就退休
  5. JVM进阶之路, 不然又要被面试官吊打了
  6. 从链表中删除数据的时间复杂度真的是O(1)吗?
  7. 源三:聊聊注册中心在蚂蚁集团的降本提效之路
  8. 血泪教训!拖垮公司的技术团队常用的 7 个操作
  9. 绿色日期控件皮肤 My97 DatePicker
  10. Mac与centos的ip配置