小明系列问题――小明序列(LIS)

小明系列问题――小明序列
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Submit Status Practice HDU 4521

Description

大家都知道小明最喜欢研究跟序列有关的问题了,可是也就因为这样,小明几乎已经玩遍各种序列问题了。可怜的小明苦苦地在各大网站上寻找着新的序列问题,可是找来找去都是自己早已研究过的序列。小明想既然找不到,那就自己来发明一个新的序列问题吧!小明想啊想,终于想出了一个新的序列问题,他欣喜若狂,因为是自己想出来的,于是将其新序列问题命名为“小明序列”。 

  提起小明序列,他给出的定义是这样的: 
  ①首先定义S为一个有序序列,S={ A1 , A2 , A3 , ... , An },n为元素个数 ; 
  ②然后定义Sub为S中取出的一个子序列,Sub={ Ai1 , Ai2 , Ai3 , ... , Aim },m为元素个数 ; 
  ③其中Sub满足 Ai1 < Ai2 < Ai3 < ... < Aij-1 < Aij < Aij+1 < ... < Aim ; 
  ④同时Sub满足对于任意相连的两个Aij-1与Aij都有 ij - ij-1 > d (1 < j <= m, d为给定的整数); 
  ⑤显然满足这样的Sub子序列会有许许多多,而在取出的这些子序列Sub中,元素个数最多的称为“小明序列”(即m最大的一个Sub子序列)。 
  例如:序列S={2,1,3,4} ,其中d=1; 
  可得“小明序列”的m=2。即Sub={2,3}或者{2,4}或者{1,4}都是“小明序列”。 

  当小明发明了“小明序列”那一刻,情绪非常激动,以至于头脑凌乱,于是他想请你来帮他算算在给定的S序列以及整数d的情况下,“小明序列”中的元素需要多少个呢? 

Input

输入数据多组,处理到文件结束; 
  输入的第一行为两个正整数 n 和 d;(1<=n<=10^5 , 0<=d<=10^5) 
  输入的第二行为n个整数A1 , A2 , A3 , ... , An,表示S序列的n个元素。(0<=Ai<=10^5)

Output

请对每组数据输出“小明序列”中的元素需要多少个,每组测试数据输出一行。

Sample Input

2 0 1 2 5 1 3 4 5 1 2 5 2 3 4 5 1 2

Sample Output

2 2 1

 

#include<bits/stdc++.h>
using namespace std;
const int M = 1e5 + 10 , inf = 0x3f3f3f3f;
int n , d ;
int a[M] , Top[M] , maxn[M];
int judge (int x) {int l = 0 , r = n ;int ret = l ;while (l <= r) {int mid = l + r >> 1 ;if (x > Top[mid]) {l = mid+1 ;ret = mid ;}else r = mid-1 ;}return ret+1 ;
}void solve () {int ans = 0 ;for (int i = 1 ; i <= n ; i ++) {maxn[i] = judge (a[i]) ;ans = max (maxn[i] , ans) ;int j = i-d ;if (j > 0) Top[ maxn[j] ] = min (Top[ maxn[j] ] , a[j] ) ;}printf ("%d\n" , ans ) ;
}int main () {while (~ scanf ("%d%d" , &n , &d)) {Top[0] = -inf ;for (int i = 1 ; i <= n ; i ++) {scanf ("%d" , &a[i]) ;Top[i] = inf ;}solve () ;}return 0 ;
}

  我想大多数人写LIS,都不会设置一个数组去记录以每个值结尾的最长子序列的LIS,因为:

1.我们一般只关心整体的LIS。

2.一般求出子序列的LIS就立刻拿去跟新Top[lis]了,哪里需要存在一个数组里。

然后这就导致一个梗了,我完全没有想过局部lis还有什么用。

就这道题目而言,思路其实就四个字:

延迟跟新。

每次跟新都延迟d次。

转载于:https://www.cnblogs.com/get-an-AC-everyday/p/4761754.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【汇编语言-3】 代码、数据、堆栈在同一个段

(1) 代码段中使用数据 编程计算8个数据的和&#xff0c;结果保存在ax中。代码如下&#xff1a; code segmentassume cs:code dw 0123H,0456H,0789H,00bcH,00efh,0667h,072fh,0990H movbx,0movax,0movcx,8s:addax,cs:[bx] addbx,2loop s movax,4c00h int21hcode …

[react] 自定义组件时render是可选的吗?为什么?

[react] 自定义组件时render是可选的吗&#xff1f;为什么&#xff1f; 根据文档描述&#xff0c;class组件的render函数是必选的&#xff1a;The render() method is the only required method in a class component. 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后…

Ubuntu换源失败:Could not get lock /var/lib/apt/lists/lock - open

1、根据网上相关教程更改国内的镜像源&#xff0c;编辑了sources.list后&#xff0c;执行sudo apt-get update 出现以下报错&#xff1a; E:Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable) 2、问题解析&#xff1a;内部进程正在…

微信支付(APP)集成时碰到的问题(.net提示“无权限”、iOS跳转到微信支付页面中间只有一个“确定”按钮)...

直入主题之前&#xff0c;请容我吐槽一下微*的官方东西:ASDFQ%#$%$#$%^FG#$%DSFQ#$%.......&#xff1b;吐槽玩了&#xff01;大家心照就好。 要完成手机APP跳转到微信的APP进行微信支付&#xff0c;需要进行如下操作&#xff1a; 1、先去微信的开放平台&#xff08;http://ope…

[react] 使用Hooks要遵守哪些原则?

[react] 使用Hooks要遵守哪些原则&#xff1f; 只在最顶层使用 Hook 不要在循环&#xff0c;条件或嵌套函数中调用 Hook&#xff0c; 确保总是在你的 React 函数的最顶层调用他们。只在 React 函数中调用 Hook 不要在普通的 JavaScript 函数中调用 Hook。你可以&#xff1a; ✅…

QT出现“undefined reference to `vtable for’”解决方法

Qt 中新建类时&#xff0c;若需要使用信号与槽机制&#xff0c;必须显式启用Q_OBJECT宏。利用QT IDE添加并创建新的类时&#xff0c;在编译过程中会出现以下报错&#xff1a; undefined reference to vtable for XXX类名’” 查询相关资料&#xff0c;利用IDE创建类别时&…

Wireshark图解教程

Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据&#xff0c;并为用户提供关于网络和上层协议的各种信息。与很多其他网络工具一样&#xff0c;Wireshark也使用pcap network library来进行封包捕捉。可破解局域网内QQ、邮箱、msn、账号等的密码&am…

Qt QProcess执行Linux 命令行的方法

1、QProcess 打开一个bash终端&#xff0c;可以执行一般的命令&#xff0c;主要实现步骤如下 m_proces_bash new QProcess; m_proces_bash->start("bash"); m_proces_bash->waitForStarted(); connect(m_proces_bash,SIGNAL(readyReadStandardOutput()),this…

[react] useEffect和useLayoutEffect有什么区别?

[react] useEffect和useLayoutEffect有什么区别&#xff1f; useEffect是异步的&#xff0c;所谓的异步就是利用requestIdleCallback&#xff0c;在浏览器空闲时间执行传入的callback。大部分情况下&#xff0c;用哪一个都是一样的&#xff0c;如果副作用执行比较长&#xff0…

使用winform来递归实现资源管理器

这里主要是对TreeView控件的学习 所使用到的方法&#xff1a; string path"E:\歌词"; //获得指定文件夹下所有文件夹的名称&#xff0c;这是带路径的&#xff0c;如&#xff1a;E:\歌词\1111111 Directory.GetDirectories(path); //获得指定路径下的文件的文件名&…

centos配置单网卡双IP

vi /etc/sysconfig/network-scripts/ifcfg-eth0:1 DEVICEeth0:1BOOTPROTOstaticIPADDRIP地址NETMASK掩码ONBOOTyesservice network restart转载于:https://blog.51cto.com/gdzy1987/591124

Linux Qt打包发布应用程序

1、新建脚本文件pack.sh SensorMaster.sh (1)pack.sh #!/bin/sh exe"SensorMaster" #你需要发布的程序名称 des"/home/jianwang16/SensorMaster_Proj/build-SensorMaster-Desktop_Qt_5_9_0_GCC_64bit-Release/SensorMaster_Pack/install-pack " #创建文…

拟合优度检验

可决系数 可决系数&#xff08;coefficient of determination&#xff09; 如果样本回归线对样本观测值拟合程度越好&#xff0c;各样本观测点与回归线靠得越近&#xff0c;由样本回归做出解释的离差平方和与总离差平方和越相近&#xff1b;反之&#xff0c;拟合程度越差&…

Linux Qt打包应用程序--利用linuxdeployqt

1、下载安装linuxdeployqt (1) github 地址&#xff1a;https://github.com/probonopd/linuxdeployqt/releases 下载 linuxdeployqt-6-x86_64.AppImage 名称太长&#xff0c;可修改为linuxdeployqt (2)复制到/usr/local/bin 文件夹下&#xff0c;并增加可执行权限 sudo chmo…

移动端 项目开发经验集锦

移动端 项目开发经验集锦 本次要与大家分享的是&#xff0c;在项目开发过程中&#xff0c;移动端遇到的各种问题~本文主要与大家分享移动端开发经验&#xff0c;主要包括表单兼容&#xff08;fixed定位的input存在的问题、iPhone、iPad的按钮默认样式、默认高光样式的处理、关闭…

[react] 怎么定时更新一个组件?

[react] 怎么定时更新一个组件&#xff1f; class Clock extends React.Component{constructor(props){super(props);this.state{date:new Date()};}componentDidMount(){this.timerIDsetInterval(()>this.tick(),1000);}componentWillUnmount(){clearInterval(this.timerI…

Linux中find用法

Linux中find常见用法示例 find path -option [ -print ] [ -exec -ok command ] {} \; #-print 将查找到的文件输出到标准输出 #-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格 #-ok 和-exec相同&#xff0c;只不过在操作前…

Fedora 17 下 Samba 服务快速设置

From : http://blog.sina.com.cn/s/blog_90cb4c630101724d.html ###############################Samba 服务器搭建及配置 - Jerrydq73更新日期: 2012.7.14###############################0. 参考&#xff1a;Fedora 及 CentOS 下 Samba 服务器的快速搭建1. 安装# yum instal…

Qt 设置窗体或控件渐变消失

1、主窗体渐变 QPropertyAnimation *animation new QPropertyAnimation(this,"windowOpacity");animation->setDuration(500);animation->setStartValue(1);animation->setEndValue(0);animation->setEasingCurve(QEasingCurve::Linear);animation->s…

[react] 在React中怎么使用async/await?

[react] 在React中怎么使用async/await&#xff1f; 如果是脚手架创建的react项目即可直接使用&#xff0c;否则需要配置babel 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关…