F. Longest Strike[双指针详解]

Longest Strike

题面翻译

给你一个长度为 n n n 的序列 a a a 和一个整数 k k k,你要求一个区间 [ l , r ] [l,r] [l,r] 满足:

  • 对于任何整数 x ∈ [ l , r ] x∈[l,r] x[l,r] x x x a a a 中的出现次数不少于 k k k 次。
  • 最大化 r − l r-l rl

无解输出 -1

例如, a = [ 11 , 11 , 12 , 13 , 13 , 14 , 14 ] , k = 2 a=[11,11,12,13,13,14,14],k=2 a=[11,11,12,13,13,14,14],k=2 时:

  • l = 12 , r = 14 l=12,r=14 l=12,r=14 不满足条件,因为 12 12 12 只出现了 1 1 1 次。
  • l = 13 , r = 14 l=13,r=14 l=13,r=14 满足条件,因为 13 13 13 出现了 2 2 2 次, 14 14 14 出现了 2 2 2 次。
  • l = 11 , r = 11 l=11,r=11 l=11,r=11 满足条件,因为 11 11 11 出现了 2 2 2 次。

满足条件且 r − l r-l rl 最大的区间是 l = 13 , r = 14 l=13,r=14 l=13,r=14
在这里插入图片描述在这里插入图片描述

样例 #1

样例输入 #1

4
7 2
11 11 12 13 13 14 14
5 1
6 3 5 2 1
6 4
4 3 4 3 3 4
14 2
1 1 2 2 2 3 3 3 3 4 4 4 4 4

样例输出 #1

13 14
1 3
-1
1 4

思路:
注意题目里面的x是任何属于l与r区间的数,所以我们取得这个区间一定是满足单调递增且公差是1的一组序列,然后把这些数放入一个全新的a序列里面,用双指针判断即可
判断一个序列是否要结束
1.次数不够了要终止
2.出现的断要终止
3.到了结尾要终止

即:if (a[i] - a[i - 1] != 1 || mp[a[i]] < m||i==k+1)
三种情况出现一个就要结束

#include<iostream>
#include<cstring>
#include<algorithm>
#include<string>
#include<map>
using namespace std;
int t, n, m;
int w[200005];
int a[200005];
int main()
{cin >> t;while (t--){int sst=0, ed=0;//上限与下限bool vis = 0;//判断能不能构成int ans = 0;map<int, int>mp;//判断每一个数出现的个数map<int, int>st;cin >> n >> m;for (int i = 1; i <= n; i++) {cin >> w[i], mp[w[i]]++;//个数++if (mp[w[i]] >= m)vis = 1;//这样肯定就是合法的,//即不用输出-1}sort(w + 1, w + 1 + n);//排个序方便判断int k = 1;for (int i = 1; i <= n; i++){if (!st[w[i]])a[k++] = w[i], st[w[i]] = 1;}      k--;//k多加了一次要剪掉int r = 1;int l = 1;a[0] = a[1] - 1;while (l <= k && mp[a[l]] < m) l++;//确定l下限的位置r = l;for (int i = l; i <= k+1; i++){if (a[i] - a[i - 1] != 1 || mp[a[i]] < m||i==k+1){r = i - 1;if (ans < r - l + 1) {//长度变大,记得更新边界sst = l;ed = r;ans = r - l + 1;}l = i;while (l <= k && mp[a[l]] < m) l++;//确定l下限的位置i = l;}}if (!vis) cout << -1 << endl;//无答案else cout << a[sst] << " " << a[ed] << endl;}return 0;
}

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

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

相关文章

redis数据类型之Hash,Bitmaps

华子目录 Hash结构图相关命令hexists key fieldhmset key field1 value1 [field2 value2...]hscan key cursor [MATCH pattern] [COUNT count] Bitmaps位图相关命令setbit1. **命令描述**2. **语法**3. **参数限制**4. **内存分配与性能**5. **应用实例**6. **其他相关命令**7.…

19 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 冰后回弹(GIA)改正

19 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 冰后回弹(GIA)改正 0 引言1 gia数据处理过程0 引言 由水量平衡方程可以将地下水储量的计算过程分解为3个部分,第一部分计算陆地水储量变化、第二部分计算地表水储量变化、第三部分计算冰后回弹改正、第四部分计算地下…

07- Redis 中的 HyperLogLog 数据类型和应用场景

1. 介绍 Redis HyperLogLog 是 Redis 2.8.9 版本新增的数据类型&#xff0c;是一种用于【统计基数】的数据集合类型&#xff0c;基数统计就是指统计一个集合中不重复的元素个数。但要注意&#xff0c;HyperLogLog 的统计规则是基于概率完成的&#xff0c;不是非常准确&#xf…

ABAP MD04增强排除MRP元素

场景 MD04跑出来很多MRP元素&#xff0c;用户想手工控制某些MRP元素不参与运算 分析 增强点还蛮好找的&#xff0c;控制MRP元素是否参与运算用下面的se19三代增强点就可以&#xff0c;打个断点看下MD04进的哪个增强点就行 旧版本的用这个&#xff1a;MD_CHANGE_MRP_DATA 新…

《广告数据定量分析》读书笔记之理论/概论

《广告数据定量分析 如何成为一位厉害的广告优化师》 一、理论/概况 1.广告优化中的统计学&#xff1a; &#xff08;1&#xff09;获取推广相关数据&#xff1b; &#xff08;2&#xff09;将数据处理为需要的指标如转化率、roi等进行分析其投放效果&#xff1b; &#x…

flask的一些简要基础问答

1. Flask 中的 blinker&#xff1a; Blinker 是一个用于信号分发的库。在 Flask 中&#xff0c;它主要用于实现事件的发送和接收机制。通过使用 blinker&#xff0c;可以方便地在不同的组件之间进行通信和协调&#xff0c;当特定的事件发生时&#xff0c;可以触发相关的处理函…

NVIDIA Jetson 上编译opencv 4.9.0

直接上命令 cmake .. \ -DCMAKE_C_COMPILER/usr/bin/gcc-7 -DCMAKE_CXX_COMPILER/usr/bin/g-7 \ -DCMAKE_BUILD_TYPERelease \ -DCMAKE_INSTALL_PREFIX/usr/local \ -DOPENCV_ENABLE_NONFREE1 \ -DBUILD_opencv_python21 \ -DBUILD_opencv_python31 \ -DCUDA_TOOLKIT_ROOT_DIR…

C++STL容器系列(三)list的详细用法和底层实现

目录 一&#xff1a;介绍二&#xff1a;list的创建和方法创建list方法 三&#xff1a;list的具体用法3.1 push_back、pop_back、push_front、pop_front3.2 insert() 和 erase()3.3 splice 函数 四&#xff1a;list容器底层实现4.1 list 容器节点结构5.2 list容器迭代器的底层实…

【window 安装 service bus explorer】

安装ServiceBusExplorer 首先需要安装Chocolatey安装 service bus explorer 首先需要安装Chocolatey 参考&#xff1a; https://chocolatey.org/install#install-step2 以管理员身份运行powershell输入Get-ExecutionPolicy回车&#xff0c;若显示 Restricted输入Set-Executio…

CentOS8环境下FTP服务器安装与配置

在本指南中&#xff0c;我们将一步步介绍如何在CentOS 8环境下安装和配置一个FTP服务器。FTP&#xff08;文件传输协议&#xff09;是一种网络传输协议&#xff0c;用于在网络中的计算机之间传输文件。虽然现在有更安全的传输方式&#xff0c;如SFTP或FTP over SSL&#xff0c;…

python -【一】基础语法

python 基础语法 一. 基础数据类型 常用的 6 种数据类型 类型描述说明数字&#xff08;Number&#xff09;int&#xff0c;float&#xff0c;complex(复数)&#xff0c;bool复数&#xff1a;4 3j&#xff0c;j 表示复数字符串&#xff08;String&#xff09;文本&#xff1…

小短片创作-理论知识(三)

1、抗锯齿 1.相机移动的时候出现锯齿 2.当1个像素在三角形边缘的时候&#xff0c;可能取值为白色&#xff0c;也可能取值为黑色&#xff0c;表现出来就是闪烁&#xff0c;或锯齿 3.如果我们通过超采样将1个像素变成4个像素进行计算&#xff0c;得到的结果就会更准确&#x…

Codeforces Round 945 (Div. 2) C. Cat, Fox and Double Maximum 题解 贪心 构造

Cat, Fox and Double Maximum 题目描述 Fox loves permutations! She came up with the following problem and asked Cat to solve it: You are given an even positive integer n n n and a permutation † ^\dagger † p p p of length n n n. The score of another …

电脑显示不出网络

你的电脑是否在开机后显示不出网络&#xff0c;或者有网络消失的现象&#xff1f;今天和大家分享我学到的一个办法&#xff0c;希望对大家有用。 分析出现这类现象的原因&#xff1a;可能是电脑网卡松动了&#xff0c;电脑中存在静电流。 解决办法&#xff1a;先将电脑关机&am…

深度学习(一)

深度学习&#xff08;一&#xff09; 一、实验目的 掌握前馈全连接神经网络&#xff0c;具体包括&#xff1a; (1) 前馈全连接神经网络的网络结构 (2) 前馈神全连接经网络的工作原理 (3) 前馈全连接神经网络的代码实现 二、实验内容 1. 导入常用工具包 2. 数据导入与数据…

大模型对齐方法笔记二:基于Rank的对齐方法RRHF和PRO

文章目录 RRHFPRO将RLHF嫁接到PRO 参考资料 RRHF RRHF(Rank Responses to align Human Feedback)出自2023年4月的论文《RRHF: Rank Responses to Align Language Models with Human Feedback without tears》&#xff0c;是较早提出的不需要使用PPO来对齐人类偏好的方法。 设…

nginx安装部署问题

记一次nginx启动报错问题处理 问题1 内网部署nginx&#xff0c;开始执行make&#xff0c;执行不了&#xff0c;后面装了依赖的环境 yum install gcc-c 和 yum install -y pcre pcre-devel 问题2&#xff0c;启动nginx报错 解决nginx: [emerg] unknown directive “stream“ in…

Keil5 ~STM32报错Solutions#1

一、error: #268: declaration may not appear after executable statement in block

tar 详细说明

tar命令在Unix和类Unix系统中被广泛用于打包和压缩文件。以下是对tar命令的详细说明&#xff1a; 一、命令概述 tar命令的名称来源于“tape archive”&#xff08;磁带存档&#xff09;&#xff0c;最初设计用于在磁带上创建备份。现在&#xff0c;它已成为在Unix和类Unix系统…

Thingsboard规则链:Customer Details节点详解

在物联网&#xff08;IoT&#xff09;平台Thingsboard的规则引擎体系中&#xff0c;Customer Details节点是一个功能强大的组件&#xff0c;它专为处理与客户&#xff08;Customer&#xff09;实体相关的综合信息而设计。这个节点不仅能够读取客户的基本属性&#xff0c;还能提…