HDURevenge of Segment Tree(第二长的递增子序列)
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.最长单调递增子序列 设计一个 O(n2)时间的算法,找出由 n 个数组成的序列 a 的最长单调递增子序列. 提示: 用数组 b[0:n]纪录以 a[i] (0<= i< ...
- 5-3 最长连续递增子序列 (20分)
5-3 最长连续递增子序列 (20分) 给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8 ...
- pta最长连续递增子序列C语言,pta 习题集 5-5 最长连续递增子序列 (dp)
给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8). 输入格式: 输入第1行给出正整数n ...
- 7-1 最长连续递增子序列 (20 分)
给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8). 输入格式: 输入第1行给出正整数n ...
- 7-181 最长连续递增子序列 (20 分)
7-181 最长连续递增子序列 (20 分) 给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4, ...
- 7-8 最长连续递增子序列 (15 分)
** 7-8 最长连续递增子序列 (15 分) ** 给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为( ...
- 习题3.4 最长连续递增子序列 (20 分) 数据结构 PTA
给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8). 输入格式: 输入第1行给出正整数n ...
- 最长单调递增子序列 [转]
[转] http://skynewborn.blog.sohu.com/66594610.html 单调子序列包含有单调递增子序列和递减子序列,不失一般性,这里只讨论单调递增子序列.首先,从定义上明确 ...
- 最长单调递增子序列O(NlogN)算法
O(NlgN)算法 假设存在一个序列d[1..9] ={ 2,1 ,5 ,3 ,6,4, 8 ,9, 7},可以看出来它的LIS长度为5. 下面一步一步试着找出它. 我们定义一个序列B,然后 ...
最新文章
- 决策树 python 结果画图_scikit-learn决策树的python实现以及作图
- CTFshow 反序列化 web260
- 大数据项目一般金额多少_大数据分析师年薪一般多少?学什么专业才能从事大数据?...
- 关于textArea的一些琐事
- sql查询between and_SQL(二)——SQL简单查询
- k8s php mysql_在k8s上部署第一个php应用
- 编译py-faster-rcnn全过程
- python3.7 安装cx_Freeze
- informix linux安装步骤
- HDU5985 Lucky Conins 概率题
- echarts3.0 本期累计堆叠
- 【前沿】详细讲解Transformer新型神经网络在机器翻译中的应用
- python+opencv+图像几何变换(图片缩放、剪切、位移、镜像,放射变换,旋转)
- FPGA的多路偶数分频器设计
- 不能整除7的整数C语言,求1-1000中能被3整除,且不能被7整除,且至少有一位数是5的整数...
- win7虚拟机VCMI无法自动安装驱动程序
- pandas读取Excel判断指定列是否有空值
- crm组织服务中的xRM消息
- mysql问题系列(一)-----No space left on device
- 操作系统思维导图总结
热门文章
- echart多个柱状图 设置y轴显示_Echart可视化学习笔记(五)
- Python中利用parse_args与namespace来简化函数传参
- leetcode —— 200. 岛屿数量
- OpenFlow网络中处理正常流量的工作流程
- aarch64(ARMv8)交叉编译环境下载
- 用Grafana为Elasticsearch做日志分析
- AlexNet--CNN经典网络模型详解(pytorch实现)
- A. Computer Game(纯模拟)
- python求1到n的平方和小于1000_C语言,求1到1000以内17倍数平方和,谢谢了
- linux cordova安装教程,mac怎么安装cordova?