23| 画展

代码实现

cpp 复制代码
const int N = 1e6 + 10;
int n, m; 
int a[N], mp[N], kind, cost, ret;

int main()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++) cin >> a[i];
	int l = 1, r = 1;
	cost = n, ret = 1;
	while(r <= n)
	{
		// 进窗口
		mp[a[r]]++;
		if (mp[a[r]] == 1) kind++;
		
		while(kind == m)
		{
			// 更新结果
			int tmp = r - l + 1; 
			if (tmp < cost)
			{
				ret = l;
				cost = tmp;
			}
			// 出窗口
			mp[a[l]]--;
			if(mp[a[l]] == 0) kind--;
			l++;
		 } 
		 
		 r++;
	}
	cout << ret << " " << ret + cost -1 << endl;
	return 0;
}
相关推荐
不知名的老吴3 分钟前
C++ 中函数对象的形式概述
开发语言·c++
搬砖者(视觉算法工程师)4 分钟前
计算机视觉与计算摄影测量学第三讲图像直方图:理论、统计特性与点运算变换
人工智能·算法·计算机视觉
Yingjun Mo9 分钟前
3. Meta-Harness:模型基座外壳的端到端优化
人工智能·算法
Cthy_hy11 分钟前
并查集(Disjoint Set Union):巧判「连通聚类关系」的极简利器
数据结构·算法
Shan120512 分钟前
C++中函数对象之重载 operator()
开发语言·c++·算法
逻辑君12 分钟前
物理生物学研究报告【20260007】
人工智能·算法
阿维的博客日记17 分钟前
简单说一下ArrayList的add机制,适合应试者表达的
算法·arraylist
吃好睡好便好23 分钟前
伽利略·伽利雷的故事
学习
GEO从入门到精通24 分钟前
为什么要学习GEO?
人工智能·学习
djarmy37 分钟前
一级函数头地址指针,(*p_func)的函数头的返回值,(*p_func)的函数头的参数列表
c++