蓝桥杯每日一题2023.10.30-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

题目描述

日志统计 - 蓝桥云课 (lanqiao.cn)

题目分析

本题可以使用双指针来维护时间段的区间在维护的时间段内确定是否为热帖

#include<bits/stdc++.h>
using namespace std;
typedef long long ll; 
const int N = 2e5 + 10;
struct node
{
	int t, id;
}tiee[N];
int n, d, k, cnt[N];
set<int> st;
bool cmp(node a, node b)
{
	return a.t < b.t;
}
int main()
{
	cin >> n >> d >> k;
	for(int i = 1; i <= n; i ++)
	{
		cin >> tiee[i].t >> tiee[i].id;
	}
	sort(tiee + 1, tiee + 1 + n, cmp);
	for(int i = 1, j = 1; i <= n; i ++)
	{
		cnt[tiee[i].id] ++;//cnt[id]表示同一个id获赞数 
		while(tiee[i].t - tiee[j].t >= d)//两个帖子的时间相差超过d说明该赞无效 
		{
			cnt[tiee[j].id] --;//无效的id需要被减掉 
			j ++; 
		} 
		int x = tiee[i].id;
		if(cnt[tiee[i].id] >= k)st.insert(x);//set自动排序去重 
	}
	for(auto i : st)cout << i << '\n';
	return 0;
} 
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6