11. 【Codeforces Round 938 (Div. 3)】D.不准确的后续搜索

D . 不准确的后续搜索 D.不准确的后续搜索 D.不准确的后续搜索 每次测试的时间限制: 2 秒 每次测试的时间限制:2 秒 每次测试的时间限制:2 每次测试的内存限制: 256 兆字节 每次测试的内存限制:256 兆字节 每次测试的内存限制:256兆字节


题目描述

Maxim 有一个由 n n n 个整数组成的数组 a a a 和一个由 m m m 个整数组成的数组 b b b m ≤ n m \le n mn )。

如果数组 c c c 中的元素可以重新排列,使得其中至少有 k k k 个元素与数组 b b b 中的元素匹配,那么马克西姆认为长度为 m m m 的数组 c c c 是好数组。

例如,如果 b = [ 1 , 2 , 3 , 4 ] b = [1, 2, 3, 4] b=[1,2,3,4] k = 3 k = 3 k=3 ,那么数组 [ 4 , 1 , 2 , 3 ] [4, 1, 2, 3] [4,1,2,3] [ 2 , 3 , 4 , 5 ] [2, 3, 4, 5] [2,3,4,5] 就是好数组(它们可以重新排列如下: [ 1 , 2 , 3 , 4 ] [1, 2, 3, 4] [1,2,3,4] [ 5 , 2 , 3 , 4 ] [5, 2, 3, 4] [5,2,3,4] ),而数组 [ 3 , 4 , 5 , 6 ] [3, 4, 5, 6] [3,4,5,6] [ 3 , 4 , 3 , 4 ] [3, 4, 3, 4] [3,4,3,4] 则不是好数组。

马克西姆希望选择长度为 m m m 的数组 a a a 的每个子段作为数组 c c c 的元素。帮助 Maxim 计算有多少个数组是好的。

换句话说,求有多少个位置 1 ≤ l ≤ n − m + 1 1 \le l \le n - m + 1 1lnm+1 的元素 a l , a l + 1 , … , a l + m − 1 a_l, a_{l+1}, \dots, a_{l + m - 1} al,al+1,,al+m1 构成一个好数组。


输入

第一行包含一个整数 t t t ( 1 ≤ t ≤ 1 0 4 1 \le t \le 10^4 1t104 ) - 测试用例的数量。

每个测试用例的第一行包含三个整数 n n n m m m k k k 1 ≤ k ≤ m ≤ n ≤ 2 ⋅ 1 0 5 1 \le k \le m \le n \le 2 \cdot 10^5 1kmn2105 )–数组中元素的个数。( 1 ≤ k ≤ m ≤ n ≤ 2 ⋅ 1 0 5 1 \le k \le m \le n \le 2 \cdot 10^5 1kmn2105 ) - 数组 a a a b b b 中的元素个数,即所需的匹配元素个数。

每个测试用例的第二行包含 n n n 个整数 a 1 , a 2 , … , a n a_1, a_2, \dots, a_n a1,a2,,an ( 1 ≤ a i ≤ 1 0 6 1 \le a_i \le 10^6 1ai106 ) - 数组 a a a 的元素。数组 a a a 中的元素不一定是唯一的。

每个测试用例的第三行包含 m m m 个整数 b 1 , b 2 , … , b m b_1, b_2, \dots, b_m b1,b2,,bm ( 1 ≤ b i ≤ 1 0 6 1 \le b_i \le 10^6 1bi106 ) - 数组 b b b 的元素。数组 b b b 中的元素不一定是唯一的。

保证所有测试用例中 n n n 的总和不超过 2 ⋅ 1 0 5 2 \cdot 10^5 2105 。同样,保证所有测试用例中 m m m 的总和不超过 2 ⋅ 1 0 5 2 \cdot 10^5 2105


输出

对于每个测试用例,另起一行输出数组 a a a 中良好子段的数量。


思路:使用<滑动窗口>动态统计当前枚举到的子区间里面各个元素的个数,从而动态统计匹配的数的个数cnt

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int INF = 0x3f3f3f3f;
const int mod = 1e9 + 7; 
const int N = 200010;int a[N],b[N];
map<int,int>ha,hb;void solve()
{ha.clear();hb.clear();int n,m,k; cin>>n>>m>>k;for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=m;i++)scanf("%d",&b[i]),hb[b[i]]++;int cnt=0,ans=0;for(int i=1;i<=n;i++){ha[a[i]]++;if(ha[a[i]]<=hb[a[i]])cnt++;if(i>m){ha[a[i-m]]--;if(ha[a[i-m]]<hb[a[i-m]])cnt--;}if(i>=m && cnt>=k)ans++;}cout<<ans<<endl;   
}int main()
{int t; cin>>t;while(t--){solve();}return 0;
}

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

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

相关文章

设计模式: 结构型之享元模式(7)

享元模式概述 享元模式&#xff08;Flyweight Pattern&#xff09;是一种用于优化性能的结构型设计模式&#xff0c;它通过共享对象来减少内存中对象的数量享元模式通常用于当系统中存在大量相同或相似对象时&#xff0c;通过共享这些对象的状态来减少内存消耗我们会充分利用类…

Armv7-M Interworking机制

1 前言 由于历史原因(从ARM7TDMI开始)&#xff0c; ARM处理器一直支持两种形式上相对独立的指令集&#xff0c; 它们分别是&#xff1a;  32位的ARM指令集&#xff0c;对应处理器状态&#xff1a; ARM状态&#xff0c;在32位存储器上效率较高&#xff0c;能够同时访问32位的数…

【PDF.js】PDF文件预览

【PDF.js】PDF文件预览 一、PDF.js二、PDF.js 下载1、下载PDF.js2、在项目中引入3、屏蔽跨域错误 三、项目中使用四、说明五、实现效果 使用PDFJS实现pdf文件的预览&#xff0c;支持预览指定页、关键词搜索、缩略图、页面尺寸调整等等。 一、PDF.js 官方地址 文档地址 二、PD…

FPGA开源项目分享——基于 DE1-SOC 的 String Art 实现

导语 今天继续康奈尔大学FPGA课程ECE 5760的典型案例分享——基于DE1-SOC的String Art实现。 &#xff08;更多其他案例请参考网站&#xff1a; Final Projects ECE 5760&#xff09; 1. 项目概述 项目网址 ECE 5760 Final Project 项目说明 String Art起源于19世纪的数学…

高精度地图导航论文汇总

文章目录 2022基于高精度地图的智能车辆路径规划与跟踪控制研究[M] 2023一种无人驾驶融合决策方案的设计与实现[M] 2022 基于高精度地图的智能车辆路径规划与跟踪控制研究[M] 摘要&#xff1a; 随着计算机及通信技术的不断进步&#xff0c;汽车行业也得到了飞速的发展。汽车在…

InternVideo2重塑视频理解新标杆,多模态学习引领行业风向

引言&#xff1a;视频理解的新篇章——InternVideo2的介绍 随着视频内容在日常生活中的普及&#xff0c;视频理解技术的重要性日益凸显。视频不仅包含丰富的视觉信息&#xff0c;还蕴含着动态变化和多模态元素&#xff0c;如音频和文本。这些特性使得视频成为一个复杂的数据类型…

LeetCode Meditations:合并 K 排序列表

描述 合并K分类列表 状态&#xff1a; 您有一系列 k 链接-列表 lists &#xff0c;每个链接-列表按升序排序。 合并所有链接-列表为一个排序的链接-列出并返回。 例如&#xff1a; Input: lists [[1, 4, 5], [1, 3, 4], [2, 6]] Output: [1, 1, 2, 3, 4, 4, 5, 6] Explanatio…

4.5 文字绘制

PutText 函数在图像中呈现指定的文本字符串。不能使用指定字体呈现的符号将由问号替换。 void cv::putText ( cv::Mat & img,//待绘制的图像 const String & text,//待绘制的文字 Point org,//文本框的左下角 int fontFace,//字体类型 double fontScale,//尺寸因…

虹科Pico汽车示波器 | 免拆诊断案例 | 2011款东风悦达起亚K5车发动机偶尔起动困难

一、故障现象 一辆2011款东风悦达起亚K5车&#xff0c;搭载G4KD发动机&#xff0c;累计行驶里程约为24.5万km。车主反映&#xff0c;第1次起动发动机时偶尔无法起动着机&#xff0c;第2次能够正常起动着机&#xff0c;但发动机故障灯异常点亮。为此在其他维修厂维修过&#xf…

网站HTTP升级成为HTTPS的方法

将网站从HTTP免费升级为HTTPS&#xff0c;您可以按照以下步骤操作&#xff1a; 1. 选择证书颁发机构&#xff08;CA&#xff09;&#xff1a; - 为了免费升级&#xff0c;您可以选择使用JoySSL这样的公益项目。JoySSL提供免费、自动化的SSL/TLS证书颁发服务&#xff0c;适用于各…

【Spring高级】SpringMVC处理流程总结

请求处理流程中&#xff0c;DispatcherServlet作为核心组件&#xff0c;负责控制整个流程&#xff0c;协调各个组件之间的交互。同时&#xff0c;SpringMVC提供了丰富的配置选项和扩展点&#xff0c;使得开发者可以根据具体需求定制和扩展功能。 当浏览器发送一个请求 http://…

【linux】yum 和 vim

yum 和 vim 1. Linux 软件包管理器 yum1.1 什么是软件包1.2 查看软件包1.3 如何安装软件1.4 如何卸载软件1.5 关于 rzsz 2. Linux编辑器-vim使用2.1 vim的基本概念2.2 vim的基本操作2.3 vim命令模式命令集2.4 vim底行模式命令集2.5 vim操作总结补充&#xff1a;vim下批量化注释…

MySQL 8.0 克隆(clone)插件快速搭建主从复制

MySQL 8.0 clone插件提供从一个实例克隆数据的功能&#xff0c;克隆功能提供了更有效的方式来快速创建MySQL实例&#xff0c;搭建主从复制和组复制。本文介绍使用 MySQL 8.0 clone 插件快速搭建主从复制的方法 环境&#xff1a; mysql 8.0.29 主库&#xff1a;192.168.56.201…

FFmpeg: 简易ijkplayer播放器实现--01项目简介

文章目录 项目介绍流程图播放器实现过程界面展示 项目介绍 此项目基于FFmeg中 ffplay.c进行二次开发&#xff0c;实现基本的功能&#xff0c;开发软件为Qt 项目优势&#xff1a; 参考ijkplayer播放器&#xff0c;实现UI界面和播放器核心进行解耦&#xff0c;容易添加其他功能…

【Kaggle比赛】DFL 德甲足球事件检测大赛(CV·目标检测-视频分类)

赛题解析 比赛目标 进球了!在这场比赛中,你会发现足球(足球)传球ーー包括掷界外球和传中球ーー以及德甲比赛中的挑战。您将开发一个计算机视觉模型,可以在长视频记录中自动分类这些事件。 您的工作将有助于规模的数据收集过程。自动事件注释可以使事件数据从目前未探索的…

解锁视觉密码:计算机视觉理论与应用

一、引言 A. 计算机视觉的定义与重要性 计算机视觉是一门研究如何使计算机能够“看”和理解图像或视频的科学。它结合了图像处理、模式识别、机器学习等多个领域的技术&#xff0c;旨在赋予计算机对视觉信息的感知、分析和理解能力。计算机视觉的重要性在于其能够模拟人眼的视…

ELK企业日志分析系统介绍

前言 随着企业级应用系统日益复杂&#xff0c;随之产生的海量日志数据。传统的日志管理和分析手段&#xff0c;难以做到高效检索、实时监控以及深度挖掘潜在价值。在此背景下&#xff0c;ELK日志分析系统应运而生。本文将从ELK 日志分析系统的原理、架构及其在实践中的应用做相…

使用Django开发爬虫系统

在本文中&#xff0c;我们将介绍如何使用Django开发一个简单但功能强大的爬虫系统。我们将使用Python编写爬虫&#xff0c;并将爬取到的数据存储到Django模型中&#xff0c;然后通过Django的管理页面管理这些数据。 1. 介绍 爬虫系统用于从互联网上收集信息&#xff0c;常用于…

Gin环境搭建详解

Gin环境搭建详解&#xff1a; 要安装Gin软件包&#xff0c;需要先安装Go并设置Go工作区。Gin环境搭建步骤如下&#xff1a; 【Gin框架】Gin环境搭建 Gin程序的热加载 Gin路由 GET POST PUT DELETE 1. 下载并安装 gin &#xff1a; $ go get -u github.com/gin-gonic/gin 2. …

Centos7下docker的jenkins下载并配置jdk与maven【图文教程】

个人记录 进入目录 cd /usr/local/JDK下载与配置 OpenJDK官网 下载安装 wget https://download.java.net/openjdk/jdk18/ri/openjdk-1836_linux-x64_bin.tar.gz解压 tar -zxvf openjdk-1836_linux-x64_bin.tar.gz ls ls jdk-18/编辑配置文件 vim /etc/profile配置环境变…