hdu4521 小明系列问题——小明序列 线段树 间隔大于d的最长上升子序列

【异常】解决 Claude Code 及第三方插件提示 “API Error: 404“ 的配置修复指南 在使用 Claude 相关的 CLI 工具(如)或 IDE 插件进行开发辅助时,配置错误的模型参数是导致连接失败的常见原因。本文将针对这一典型报错进行复盘与解决。 阅读详情

小明系列问题——小明序列

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 2000    Accepted Submission(s): 610


Problem 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
 求间隔大于d的最长上升子序列。
 如果没有间隔为d,可以用那个nlogn的二分的方法。这里和求上升子序列的思路一样,用线段树优化。在当前位置d个之前找个值比当前元素小的并且dp值最大。以元素值为位置,在线段树里插入dp值(如果同一个值有多个dp,保留最大的),维护区间最大值。注意当处理i时,才能把i-d-1的这个元素插进去,也就是保证当前线段树里的都满足间隔d的要求。查询的时候就找比线段树里位置在[1,a[i]-1]里的最大值。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<iostream>
#include<queue>
#include<map>
#include<cmath>
using namespace std;

typedef pair<int,int> pii;

const int MAXN=100010;
const int MAXM=100010;
const int MAXNODE=4*MAXN;
const int LOGMAXN=50;
const int INF=0x3f3f3f3f;

int N,D;
int a[MAXN],dp[MAXN];

struct SegmentTree{
    int m[MAXNODE];
    void clear(){
        memset(m,0,sizeof(m));
    }
    void update(int o,int L,int R,int pos,int v){
        if(L>=R){
            m[o]=max(m[o],v);
            return;
        }
        int mid=L+(R-L)/2;
        if(pos<=mid) update(o<<1,L,mid,pos,v);
        else update(o<<1|1,mid+1,R,pos,v);
        m[o]=max(m[o<<1],m[o<<1|1]);
    }
    int query(int o,int L,int R,int ql,int qr){
        if(ql<=L&&qr>=R) return m[o];
        int mid=L+(R-L)/2;
        int ret=0;
        if(ql<=mid) ret=max(ret,query(o<<1,L,mid,ql,qr));
        if(qr>mid) ret=max(ret,query(o<<1|1,mid+1,R,ql,qr));
        return ret;
    }
}tree;

int main(){
    freopen("in.txt","r",stdin);
    while(scanf("%d%d",&N,&D)!=EOF){
        tree.clear();
        int MAX=-1;
        for(int i=1;i<=N;i++){
            scanf("%d",&a[i]);
            a[i]++;
            MAX=max(MAX,a[i]);
        }
        int ans=1;
        for(int i=1;i<=N;i++){
            if(i<=D+1) dp[i]=1;
            else{
                tree.update(1,1,MAX,a[i-D-1],dp[i-D-1]);
                if(a[i]>1) dp[i]=tree.query(1,1,MAX,1,a[i]-1)+1;
                else dp[i]=1;

            }
            ans=max(ans,dp[i]);
        }
        printf("%d\n",ans);
    }
    return 0;
}

 

基于PUMA实现DOA估计-附Matlab代码 具体而言,PUMA算法将接收的信号分别在时域和频域上进行处理,并结合平稳合成(SS)和平稳子空间(SSP)方法,以提高估计精度。该算法将传统的基于协方差矩阵的最大似然(ML)和最小二乘(LS)方法扩展到了非均匀线性阵列(ULA)上,并通过对信号分离和DOA估计的优化,达到了高精度和高分辨率的效果。方位角(DOA)估计是信号处理中的一个重要问题,它的目的是确定从多个传感器接收到的信号的方向。本文将介绍如何使用基于PUMA的方位角估计算法来实现DOA估计,并附有相应的Matlab代码实现。 阅读详情

相关推荐

告别手动干预:深入浅出LPDDR5的Background ZQ校准与DVFSQ切换避坑指南

本文深入解析LPDDR5的Background ZQ校准与DVFSQ切换技术,帮助工程师实现DRAM阻抗校准的自动化管理。通过详细配置指南和实战案例,揭示如何避免动态电压调节下的模式切换陷阱,提升信号完整性和系统能效。特别适合嵌入式系统和移动终端开发者参考。

weixin_30329623的博客 455

[HDU - 2795] 小明序列 (线段树或DP)

链接 http://acm.hdu.edu.cn/showproblem.php?pid=4521 题意 给定一个序列a,求间隔大于等于d的最长上升子序列,输出这个长度; 分析 可以用DP; 这里使用树状数组,首先根据序列中最大的数字建立一个线段树,其中线段树的每个节点[l,r]都有一个max,存储[l,r]中间隔大于等于d的最长上升子序列,其中叶子节点[i,i]代表,以i结尾的满足条件的子序列...

梧桐 233

cesium 高程数据使用

cesium 高程数据使用高程数据下载高程数据切片简单数据服务 高程数据下载 使用地理空间数据云平台免费提供的高程数据。地理空间云平台 点击列表中的下载得到数据压缩包。例如:ASTGTM2_N22E114.zip 高程数据切片 使用cesium实验室工具对下载得到的压缩包进行切片。cesium实验室 切片得到的文件夹目录。 简单数据服务 使用nodejs的koa启动简单的资源服务。koajs 项目根目录新建data文件夹,在新建dem文件夹放高程数据。 注意目录自行更换,这里是./data/dem

哎哟这个凉白白的博客 1812

HDU-4521 小明系列问题——小明序列 间隔限制最长上升子序列

题意:给定一个长度为N的序列,现在要求给出一个最长的序列满足序列中的元素严格上升并且相邻两个数字的下标间隔要严格大于d。 分析: 1.线段树 由于给定的元素的取值范围为0-10^5,因此维护一棵线段树,其中[l, r]的信息表示处理完前k个数时,序列最大元素落在[l, r]区间最长上升子序列的长度。从前往后处理给定的数组,处理到第 i 号元素时,更新第 i - d 号元素,这样就能够保证最长...

weixin_33826268的博客 185

Unity2019编译器下使用Ump无错误,打包exe不播放 或 将exe文件在其他电脑下运行不播放

一、unity编译器下使用UMP可以播放视频,打包后查看debug 出现错误 UnloadTime: 1.070900 ms Fallback handler could not load library F:/PCTest/AccessControlSysteam/jfmx_Data/Mono/libdl Fallback handler could not load library F:/PCTest/AccessControlSysteam/jfmx_Data/Mono/libdl.dll Fa.

qq_42345116的博客 4700

Flink CDC 中 StartupOptions 模式详解

Flink CDC 的 StartupOptions 模式用于指定作业启动时从源数据读取数据的起始位置,不同的模式适用于不同的业务场景,可满足多样化的数据处理需求,主要有 Initial 模式、Earliest 模式、Latest 模式、SpecificOffset 模式和 Timestamp 模式。

RodJohnsonDoctor的专栏 849

HDU4521:小明系列问题——小明序列(LIS加强版)

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

ACM!荣耀之路! 3266

PyQt5开发编译器安装(PyCharm安装)

PyCharm 提供了最完整的 PyQt5 开发体验,特别是其集成的调试工具和 Qt Designer 支持,能显著提高开发效率。是最受欢迎和功能最完整的 IDE。它专门为 Python 开发优化,对 PyQt5 有很好的支持。右键运行该文件,如果出现窗口说明配置成功。对于 PyQt5 开发,

啊渊的专栏 419

hdu 4521 小明系列问题——小明序列(单点更新)

题意:有多组测试数据,每组数据的n和d表示,有n个数,求间距大于d的最长上升序列。(1         如果数据范围比较小,就是一比较水的DP了。但是10^5级别的数据,O(n^2)的复杂度显然不科学。         用线段树搞定。线段树中叶子结点表示值为i的并且以其结束的最长上升序列是多少。每次转移的时候,查询比当前值小的最大值就可以了。 #include #include

2726

springboot&mybatis中数组和字符串数据类型的转换

/前端数组字段//数据库中字段/*与前端交互时使用的get/set*/System.out.println("接收前端数据");/*与前端交互时使用的get/set*//*与数据库交互时使用的get/set*/System.out.println("从数据库中读取数据");/*与数据库交互时使用的get/set*/

l_q_l的专栏 2476

Android 13.0 双屏时触摸失效问题排查与修复

摘要:本文记录了RK3588 Android12开发板上主屏触摸失效问题的排查与解决过程。通过分析发现,USB触摸设备被错误关联到辅屏(displayId=3)而非主屏(displayId=0)。解决方案是修改TouchInputMapper.cpp,强制触摸设备使用INTERNAL viewport(主屏),并保持设备在viewport不活跃时仍启用。该修改涉及约40行代码,有效解决了多显示器环境下触摸设备错误映射的问题,同时提供了详细的调试方法和注意事项。

ip0417的博客 354

2018.07.08 hdu4521 小明系列问题——小明序列(线段树+简单dp)

小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Problem Description   大家都知道小明最喜欢研究跟序列有关的问题了,可是也就因为这样,小明几乎已经玩遍各种序列问题了。可怜的小明苦苦地在各大网站上寻找着新的序列问题,可是找来找去都...

苟为蒟蒻又何妨 348

ABAP Open SQL 数据拷贝导致 SAPSQL_DATA_LOSS:从报错机理到稳妥修复

数据类型与长度不合规。一旦在Open SQL的无损赋值检查里被发现,系统宁可中止也不会偷偷替你截断。把变量声明对齐到字典、在需要时明确表达转换/截断意图、写法上避免落入高危的操作数位置,再配合ATC的预防性检查,既能解决你这次的ST22Dump,也能把同类问题消灭在萌芽状态。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 430

hdu 4521

题目大意:求间隔不小于d

Explorers 715

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

hdu 4521 腾讯 小明序列

这题有两种算法,第一种是线段树,第二种是最长上升子序列(LIS)的变种。 先记下LIS的: 普通的LIS的O(nlogn)的算法是:维护一个栈,每次读到的元素和栈顶元素比较,如果大则入栈,否则二分查找第一个大于它的数,并替换(潜力增大),序列长度就是栈的长度。本题限定是间隔为d,解决办法是延迟入栈。避免中间一段的dp[i]受到影响。 #include #include #include us

dimhat的专栏 677

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

hdu4521 小明系列问题——小明序列

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 2346    Accepted Submission(s): 734 Problem Description   大家都知道小明最喜欢研究跟序列有关的问题了,可是也就

新月 785

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

hdu 4521 小明系列问题——小明序列(求间距大于d的最长上升序列)

小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 2697    Accepted Submission(s): 831 Problem Description   大家都知道小明最喜欢研究

_zidaoziyan的博客 381

DDSP可微分数字信号处理原理与工程实践

可微分数字信号处理(DDSP)是一种将传统DSP模块建模为可求导函数的技术范式,其核心在于构建支持反向传播的信号处理计算图。它融合物理建模的可解释性与神经网络的数据适应性,通过模块化可微分设计(如可微振荡器、IIR滤波器)、物理先验约束和参数空间映射,实现声学系统的端到端优化。相比纯黑盒深度音频模型,DDSP在音色可控性、小样本泛化和实时部署方面具备显著工程优势,广泛应用于合成器建模、乐器复刻、VST插件开发及移动端音频生成等场景。

weixin_34025151的博客 412

hdu_4521_小明系列问题——小明序列(LIS)

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4521 题意:中文题,不解释 题解:这题就是LIS的加强版,可以用二分的nlogn来做,也可以用线段树的nlogn 做这个带间隔的LIS,具体看代码 #include #include #define root 1,n,1 #define ls l,m,rt<<1 #define rs m+1,r

bin_gege的博客 393

HDU 4521-小明序列(线段树好题)

题意: n个数字的序列,求各数位置间隔大于d的最长上升子序列 分析: 最基本的dp但是数据量大O(n^2)肯定超时 前dp[i]为的最长上升子序列是由前dp[1]---dp[i-d-1]符合条件的最大值得到,我们可以用线段树维护dp[1]---dp[i-d-1]的最大值 #include <map> #include <set> #include <l...

weixin_30920091的博客 78

树状数组

树状数组专题 1、树状数组区间求和,单点更新 2、树状数组区间更新,单点求值 3、树状数组求最值 1)HDU4521 小明序列 地址:http://acm.hdu.edu.cn/showproblem.php?pid=4521 题意:求给定序列中,求一个最长的序列元素个数,这个最长序列任意相邻的元素下标满足j - i > d 算法: 首先这题数据量比较大,O(N^2...

weixin_30491641的博客 69

uva11996 - Jewel Magic 伸展树

Problem J Jewel Magic I am a magician. I have a string of emeralds and pearls. I may insert new jewels in the string, or remove old ones. I may even reverse a consecutive part of the string. At

7527

堆 优先队列

首先看完全二叉树的定义: 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。   如果一个完全二叉树的某个结点值都不大于或小于他的父结点,那就叫做堆。根结点是所有结点里最大的叫大根堆,最小的叫小根堆。   比如:  9-1 a是大根堆,9-2 a是小根堆,剩下的都不是堆(因为不是完全二叉树)

2234

uva10410 - Tree Reconstruction BFS和DFS重建树

You have just finished a compiler design homework question whereyou had to find the parse tree of an expression. Unfortunately youleft your assignment in the library, but luckily your friend picked it

1221

uva12206 - Stammering Aliens 哈希LCP和后缀数组两种做法

Dr. Ellie Arroway has established contact with an extraterrestrialcivilization. However, all efforts to decode their messages have failed so farbecause, as luck would have it, they have stumbled upon

1034
上一篇: poj2449 Remmarguts' Date 第K短路 A*
下一篇: uva11367 - Full Tank? 最短路 DP
小小小小葱
博客等级 码龄14年 22粉丝 266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值