最长不下降子序列 (O(nlogn)算法)
分析:
定义状态dp[i]表示长度为i的最长不下降子序列最大的那个数。
每次进来一个数直接找到dp数组第一个大于于它的数dp[x],并把dp[x - 1]修改成 那个数。就可以了
AC代码:
# include <iostream> # include <cstdio> # include <cstring> # include <algorithm> using namespace std; const int N = 100012; int dp[N],n,pre[N],x,y,xh[N],a[N]; void out(int k){if(k)out(pre[k]);else return;printf("%d ",a[k]); } int main(){memset(dp,0x3f3f3f3f,sizeof dp);for(int i = 1;i <= n;i++){scanf("%d",&a[i]);y = upper_bound(dp + 1,dp + n + 1,a[i]) - dp;dp[y] = a[i];xh[y] = i;pre[i] = xh[y - 1]; }int len = lower_bound(dp + 1,dp + n + 1,dp[0]) - dp - 1;printf("%d\n",len);out(xh[len]);return 0; }
转载于:https://www.cnblogs.com/lzdhydzzh/p/7673831.html
最长不下降子序列 (O(nlogn)算法)相关推荐
- 最长不下降子序列O(NlogN) 输出序列
文章目录 不输出序列的思路 输出序列 代码 例题:导弹拦截 不输出序列的思路 我们对于O(n2)O(n^2)O(n2)的最长不下降子序列十分熟悉了. #include <bits/stdc++. ...
- [Usaco2008 Feb]Eating Together麻烦的聚餐[最长不下降子序列]
Description 为了避免餐厅过分拥挤,FJ要求奶牛们分3批就餐.每天晚饭前,奶牛们都会在餐厅前排队入内,按FJ的设想所有第3批就餐的奶牛排在队尾,队伍的前端由设定为第1批就餐的奶牛占据,中间的 ...
- 最长不下降子序列的O(n^2)算法和O(nlogn)算法
转帖 最长不下降子序列的O(n^2)算法和O(nlogn)算法 最长不下降子序列(LIS:Longest Increasing Subsequence) //用句通俗的话说,我讲的很通俗易懂~~ 问题 ...
- 求序列最长不下降子序列_最长不下降子序列nlogn算法详解
今天花了很长时间终于弄懂了这个算法--毕竟找一个好的讲解真的太难了,所以励志我要自己写一个好的讲解QAQ 这篇文章是在懂了这个问题n^2解决方案的基础上学习. 解决的问题:给定一个序列,求最长不下降子 ...
- 最长递增子序列 O(NlogN)算法
最长递增子序列 O(NlogN)算法 今天回顾WOJ1398,发现了这个当时没有理解透彻的算法. 看了好久好久,现在终于想明白了. 试着把它写下来,让自己更明白. 最长递增子序列,Longest In ...
- 最长非下降子序列(O(nlogn))(offer收割)
题目 如题 思路 核心思想是,维护一个数组ends,它记录了长度为k的子序列的末尾元素的最小值.听起来很抽象,我们不妨手动演示一遍整个过程. 假设数组a={2,9,4,27,29,15,7 ...
- 最长不下降子序列java代码_浅谈最长不下降子序列与最长上升子序列
唔,最长不下降子序列与最长上升子序列曾是困扰蒟蒻多时的一个问题,应该也有一些人分不清这2个的求法吧. 首先n^2算法肯定是都能分清的,因为不下降和上升的区别是连续的2个能不能相等,只需要在判断的时候判 ...
- NLOG 最长不下降子序列
LIS有N2的算法,还有NLOGN的算法,这里说一下NLOGN的算法. 我们设S[]为原始序列,F[i]为以S[i]结束的LIS的最大长度.在求LIS时,对于S[i],我们找一个最大的可能的F[j], ...
- 【P2766】 最长不下降子序列问题
题目描述 «问题描述: 给定正整数序列x1,...,xn . (1)计算其最长不下降子序列的长度s. (2)计算从给定的序列中最多可取出多少个长度为s的不下降子序列. (3)如果允许在取出的序列中多次 ...
最新文章
- linux目录都是什么意思,linux中的基本的目录结构都是什么意思,初学者都应该有印象-tmp是什么文件...
- xilinxaxi ethernet 硬件时间戳告警
- 剑指offer 面试3题
- 3DSlicer22:Module-ExtensionWizard Build Install
- 直播|百度AI开发者大会深度学习直播课程表
- 解决Eclipse中SVN版本比较中文乱码问题
- 文本相似度-bm25算法原理及实现
- Javascript特效:上传图片格式判断(通过后缀)
- 数据分析可视化图表mysql_50个最有价值的数据可视化图表
- CSV写入时指定表头
- php中文网怎么修改头像,thinkphp 头像上传在线剪切编辑问题 (使用美图秀秀头像编辑器组件)...
- 科尼数字科技张彬:云设计系统助力行业数字化转型
- Ubuntu 20.04 从零开始安装MySQL 8.0并重置root密码
- linux修改内核logo,Linux内核开发-修改开机Logo
- 实验7-3-5 输出大写英文字母(15 分)
- C语言指针(函数指针数组,二级指针)
- 微信开发者模式php,php 开启微信公众号开发者模式
- 网络流行语2016_“云”作为流行语
- 【笔记】因子投资:方法与实践
- 今日头条能干掉微信么? | 畅言
热门文章
- python123第三周测验答案_python123 测验3: 基本数据类型 (第3周)
- 奥特曼传奇英雄存档丢了怎么找回_热血传奇:道士最帅武器—玄天
- bin文件怎么转换成文本文档_Python脚本4:根据txt文本,批量创建文件夹
- SpringCloud的学习记录(1)
- 致我的2018 你好2019
- Shiro身份认证授权原理
- input的type属性的修改
- mysql批量生成修改表和列注释语句
- 关于 block的一些浅识
- 今天读了JDK1.8源码,知道了并行迭代器Spliterator