首页 > 其他分享 >塔子哥的最短区间-小米2023笔试(codefun2000)

塔子哥的最短区间-小米2023笔试(codefun2000)

时间:2024-08-03 09:55:04浏览次数:22  
标签:塔子哥 right int cnt 数组 2023 区间 codefun2000

题目链接
塔子哥的最短区间-小米2023笔试(codefun2000)

题目内容

塔子哥有一个长度为 n 的数组 a 和 长度为 m 的数组 b ,下标均从 1 开始。
现在,塔子哥想让你找出一个最短的区间 l,r , 这个区间中数 x 的数量至少出现了 b[x] 次。

输入描述

第一行,两个整数 n,m( 1 ≤ n , m ≤ 1 0 5 1≤n,m≤10^5 1≤n,m≤105 ) 分别表示数组 a 和数组 b 的长度。
第二行,n 个整数表示数组 a 。
第三行,m 个整数表示数组 b 。

输出描述

一个整数,表示最短区间的长度,如果不存在,则输出 -1 。

样例1

输入

6 4
1 1 4 5 1 4
2 0 0 2

输出

5

提示

区间 [2,6] 满足 1 和 4 出现了至少两次,2 和 3 出现了至少 0 次。 可以证明没有更短的区间满足了。

题解1

#include<bits/stdc++.h>
using namespace std;

const int N = 1e5 + 10;

int n, m, a[N], b[N], cnt[N]; // cnt[i]表示i出现的次数 

bool check(int x){ // 当前枚举的区间长度为x 
	memset(cnt, 0, sizeof cnt);
	for(int i = 1; i <= n; i++){ 
		cnt[a[i]]++;// 双指针
		if(i >= x){  
			int j = 1;
			while(j <= m && cnt[j] >= b[j]) j++;
			if(j > m) return true;
			cnt[a[i - x + 1]]--;
		}
	}
	return false;
}
int main(){
	scanf("%d%d", &n, &m);
	for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
	for(int i = 1; i <= m; i++) scanf("%d", &b[i]);
	
	int left = - 1, right = n + 1, mid;
	while(left + 1 < right){ // 二分枚举满足条件的最小区间的长度 
		mid = (left + right)/2;
		if(check(mid)) right = mid;
		else left = mid;
	}
	printf("%d\n", check(right)?right:-1);
	return 0;
}

标签:塔子哥,right,int,cnt,数组,2023,区间,codefun2000
From: https://blog.csdn.net/qq_45332149/article/details/140886011

相关文章

  • [paper阅读笔记][2023]CorpusLM: Towards a Unified Language Model on Corpusfor Kno
    文章链接:https://arxiv.org/pdf/2402.01176v2Paper的任务处理各种知识密集型任务任务的科学问题本文任务虽然是:提出一个统一的语言模型来处理各种知识密集型任务,但其实其本质科学问题是:如何提高LLMs在知识密集型任务中的检索效率。原因是:LLMs在生成文本时容易出现错误信......
  • GEE案例:Landsat 5、7、8影像构建1985-2023年rsei生态遥感指数详细代码
    之前关于RSEI的博客 GoogleEarthEngine(GEEÿ......
  • python中  datetime.now() 获取当前时间 例如:2023-04-01 12:34:56.789012
    问:python中 datetime.now()获取当前时间例如:2023-04-0112:34:56.789012答:在Python中,datetime.now()函数是用来获取当前日期和时间的。但是,需要注意的是,这个函数是datetime模块中datetime类的一个方法,因此你需要从datetime模块中导入datetime类(尽管这看起来有点......
  • 【IEEE出版 | ICBASE 2020-2023 均已被 EI , Scopus检索 | 温州理工学院、加拿大圭尔
    第五届大数据、人工智能与软件工程国际研讨会(ICBASE2024)将于2024年09月20-22日在中国温州隆重举行。会议主要围绕大数据、人工智能与软件工程等研究领域展开讨论。会议旨在为从事大数据、人工智能与软件工程研究的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和......
  • CVE-2023-1313
    开启靶场url访问/install来运行安装http://eci-2ze0wqx38em0qticuhug.cloudeci1.ichunqiu.com/install/得知其用户和密码为admin登录查找文件上传位置上传一句话木马文件<?phpechophpinfo();@eval($_POST['flw']);?>下载查看上传木马路径复制路径/storag......
  • 【专题】2023年中国数字金融调查报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34685原文出处:拓端数据部落公众号随着数字化转型的深入推进,新客户的增长速度已达顶峰,用户运营成为推动存量增长的关键手段。调查数据显示,相比去年,网上银行用户比例有所下降,而手机银行用户比例基本持平。阅读原文,获取专题报告合集全文,解锁文末249份......
  • 0CTF/TCTF 2023 OLAPInfra Nashorn RCE + HDFS UDF RCE
    前置知识ClickHouse:是一个开源的列式数据库管理系统clickhouse-jdbc-bridge:clickhouse数据库和jdbc交互的工具HDFS(HadoopDistributedFileSystem):专为大数据存储和处理而设计。审计<?phperror_reporting(E_ALL^E_DEPRECATED);require__DIR__.'/../vendor/autol......
  • 塔子哥的编程乐趣-腾讯2023笔试(codefun2000)
    题目链接塔子哥的编程乐趣-腾讯2023笔试(codefun2000)题目内容塔子哥是一位资深的程序员,他最近在研究一种特殊的数组操作。他有一个由正整数组成的数组,数组的长度是偶数。塔子哥可以对数组中的任意一个数字执行以下两种操作之一:将该数字乘以2;将该数字除以2并向下......
  • 更新至2023年上市公司ESG数据合集(十份数据:华证年度、华证季度、商道融绿、wind、秩鼎
    更新至2023年上市公司ESG数据合集(十份数据:华证年度、华证季度、商道融绿、wind、秩鼎、润灵环球、盟浪、富时罗素、上市银行华证ESG)数据名称:一、2018-2023年上市公司富时罗素ESG评分数据二、2018-2023年上市公司WindESG评级数据三、2014-2023年上市公司盟浪ESG评级数据四......
  • 2023华数杯优秀论文A-数值模拟在隔热结构上的应用
    摘要本文研究了平纹织物整体的热导率和单根A纤维的热导率之间模型,对题目所给的表面温度分布进行插值,对于纤维材料建立了整体分析和微观最小单位分析两种模型,通过建立热传导方程和边界条件并且利用两种模型的参数进行温度分布的计算,使得两种模型下的温度分布最接近则建立......