HDURevenge of Segment Tree(第二长的递增子序列)

题目链接

题目大意:这题是求第二长的递增子序列。

解题思路:用n^2的算法来求LIS,可是这里还要记录一下最长的那个序列是否有多种组成方式,假设>= 2, 那么第二长的还是最长的LIS的长度,否则就是LIS - 1;

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>using namespace std;const int maxn = 1005;
int l[maxn], c[maxn];
int arr[maxn];int main () {int T, n;scanf ("%d", &T);while (T--) {scanf ("%d", &n);for (int i = 1; i <= n; i++)scanf ("%d", &arr[i]);for (int i = 1; i <= n; i++)l[i] = c[i] = 1;int ans = 1; for (int i = 2; i <= n; i++) {for (int j = 1; j < i; j++) {if (arr[i] > arr[j]) {if (l[j] + 1 > l[i]) {l[i] = l[j] + 1;c[i] = c[j];} else if (l[j] + 1 == l[i])c[i] = 2;//之前直接加上c[j],结果会int溢出。导致错误。}}ans = max (ans, l[i]);}int cnt = 0;for (int i = 1; i <= n; i++)if (l[i] == ans)cnt += c[i];    if (cnt > 1)printf ("%d\n", ans);elseprintf ("%d\n", ans - 1);}return 0;
}

转载于:https://www.cnblogs.com/zfyouxi/p/5162850.html

HDURevenge of Segment Tree(第二长的递增子序列)相关推荐

  1. 动态规划作业 最长单调递增子序列

    动态规划作业 1.最长单调递增子序列 设计一个 O(n2)时间的算法,找出由 n 个数组成的序列 a 的最长单调递增子序列. 提示: 用数组 b[0:n]纪录以 a[i] (0<= i< ...

  2. 5-3 最长连续递增子序列 (20分)

    5-3 最长连续递增子序列 (20分) 给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8 ...

  3. pta最长连续递增子序列C语言,pta 习题集 5-5 最长连续递增子序列 (dp)

    给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8). 输入格式: 输入第1行给出正整数n ...

  4. 7-1 最长连续递增子序列 (20 分)

    给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8). 输入格式: 输入第1行给出正整数n ...

  5. 7-181 最长连续递增子序列 (20 分)

    7-181 最长连续递增子序列 (20 分) 给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4, ...

  6. 7-8 最长连续递增子序列 (15 分)

    ** 7-8 最长连续递增子序列 (15 分) ** 给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为( ...

  7. 习题3.4 最长连续递增子序列 (20 分) 数据结构 PTA

    给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8). 输入格式: 输入第1行给出正整数n ...

  8. 最长单调递增子序列 [转]

    [转] http://skynewborn.blog.sohu.com/66594610.html 单调子序列包含有单调递增子序列和递减子序列,不失一般性,这里只讨论单调递增子序列.首先,从定义上明确 ...

  9. 最长单调递增子序列O(NlogN)算法

     O(NlgN)算法 假设存在一个序列d[1..9] ={ 2,1 ,5 ,3 ,6,4, 8 ,9, 7},可以看出来它的LIS长度为5.  下面一步一步试着找出它.  我们定义一个序列B,然后 ...

最新文章

  1. 决策树 python 结果画图_scikit-learn决策树的python实现以及作图
  2. CTFshow 反序列化 web260
  3. 大数据项目一般金额多少_大数据分析师年薪一般多少?学什么专业才能从事大数据?...
  4. 关于textArea的一些琐事
  5. sql查询between and_SQL(二)——SQL简单查询
  6. k8s php mysql_在k8s上部署第一个php应用
  7. 编译py-faster-rcnn全过程
  8. python3.7 安装cx_Freeze
  9. informix linux安装步骤
  10. HDU5985 Lucky Conins 概率题
  11. echarts3.0 本期累计堆叠
  12. 【前沿】详细讲解Transformer新型神经网络在机器翻译中的应用
  13. python+opencv+图像几何变换(图片缩放、剪切、位移、镜像,放射变换,旋转)
  14. FPGA的多路偶数分频器设计
  15. 不能整除7的整数C语言,求1-1000中能被3整除,且不能被7整除,且至少有一位数是5的整数...
  16. win7虚拟机VCMI无法自动安装驱动程序
  17. pandas读取Excel判断指定列是否有空值
  18. crm组织服务中的xRM消息
  19. mysql问题系列(一)-----No space left on device
  20. 操作系统思维导图总结

热门文章

  1. echart多个柱状图 设置y轴显示_Echart可视化学习笔记(五)
  2. Python中利用parse_args与namespace来简化函数传参
  3. leetcode —— 200. 岛屿数量
  4. OpenFlow网络中处理正常流量的工作流程
  5. aarch64(ARMv8)交叉编译环境下载
  6. 用Grafana为Elasticsearch做日志分析
  7. AlexNet--CNN经典网络模型详解(pytorch实现)
  8. A. Computer Game(纯模拟)
  9. python求1到n的平方和小于1000_C语言,求1到1000以内17倍数平方和,谢谢了
  10. linux cordova安装教程,mac怎么安装cordova?