Educational Codeforces Round 170 C New Game

思路

滑动窗口

排完序后找左右边界差值小于等于k 的最长子序列长度即可

可以用map去重

代码

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

const int N = 200010;

int t, n, k;
int a[N], b[N];

void solve()
{
	cin >> n >> k;
	
	for (int i = 1; i <= n; i ++ ) cin >> a[i];
	
	map<int, int> ump;
	
	int tt = 0;
	
	for (int i = 1; i <= n; i ++ )
	{
		if (!ump[a[i]])
		{
			b[tt ++ ] = a[i];
		}
		ump[a[i]] ++;
	}
	
	sort(b, b + tt);
	
	int res = 0;
	int i, j;
	int temp = 0;
	for (i = 0, j = 0; i < tt; i ++ )
	{
		
		j = max(i, j);
		
		if (j == i)
			temp = ump[b[i]];
		else
			temp -= ump[b[i - 1]];
		
		while (j < tt - 1 && b[j] + 1 == b[j + 1] && j - i + 1 < k)
		{
			j ++;
			temp += ump[b[j]];
		}
		res = max(res, temp);
	}
	
	cout << res << endl;
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin >> t;
	while (t -- )
	{
		solve();
	}
}
相关推荐
lzb_kkk11 天前
【实习总结】Qt通过Qt Linguist(语言家)实现多语言支持
开发语言·c++·qt·1024程序员节·qt linguist·qt 语言家
Yangy_Jiaojiao19 天前
三维手眼标定
1024程序员节
guozhetao21 天前
【图论,拓扑排序】P1347 排序
数据结构·c++·python·算法·leetcode·图论·1024程序员节
lzb_kkk1 个月前
【C++】C++四种类型转换操作符详解
开发语言·c++·windows·1024程序员节
lzb_kkk2 个月前
【MFC】编辑框、下拉框、列表控件
c语言·开发语言·c++·mfc·1024程序员节
lzb_kkk2 个月前
【MFC】树控件的使用详解
开发语言·c++·windows·mfc·1024程序员节
SizeTheMoment3 个月前
List介绍
1024程序员节
开利网络3 个月前
产业互联网+三融战略:重构企业增长密码
大数据·运维·服务器·人工智能·重构·1024程序员节
wei_shuo3 个月前
从数据中台到数据飞轮:实现数据驱动的升级之路
1024程序员节·数据飞轮
玖剹4 个月前
矩阵区域和 --- 前缀和
数据结构·c++·算法·leetcode·矩阵·动态规划·1024程序员节