(双指针滑动窗口)AcWing 1238. 日志统计

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: (双指针滑动窗口)AcWing 1238. 日志统计

做题时和其他题混淆了,用了枚举日志的方法,只维护了相邻的两个点赞的信息


acwing外卖店优先级https://www.acwing.com/problem/content/description/1243/

pta银行排队问题之单队列多窗口服务https://pintia.cn/problem-sets/1635264548121292800/exam/problems/1636695635989049353


三者的共同点是题目输入都给了一个时间和id的二元组

且看题干都是要遍历一遍这个二元组的


不同的点是日志统计这个题,给出一个固定的区间,赞的间隔要在这个区间内才算数,右边界更新后,左边的数不能抛弃不管,需要记录在这个区间左右边界的赞的时间,要有个指针指向左边界并且根据右边界的移动而不断移动,恰巧就符合双指针滑动窗口的特征

9c1ef43f86ab48ac9c8860b372a20d2c.png

而外卖店优先级对订单(“赞”)的间隔是没有一个固定的要求的,只需要记录前面的订单(赞)给后面遗留了一个什么样的状态,根据两个相邻订单a,b(“赞”)的时间间隔来更新这个状态,并遗留给下一个订单c(“赞”),遗留过后,a就对后面的订单没有任何影响,可以彻底抛弃不管了

d8ac831cd4484c25afca0381bfc8bcf9.png

二刷卡壳,最后输出时i的范围写错了,没有走流程对比题干

代码

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N  = 1e5 + 10;
int t[N];
struct Tiezi{
    int ts,id;
    bool operator<(Tiezi w){
        return ts < w.ts;
    }
}tiezi[N];
bool st[N];
int cnt[N];
int main(){
    int n,d,k;
    cin >> n >> d >> k;
    int ts,id;
    for(int i= 0;i < n;i++){
        cin >> ts >> id;
        tiezi[i] = {ts,id};
    }
    sort(tiezi,tiezi+n);
    for(int i = 0,j = 0;j < n;j++){
        // 加的是j指针的帖子,所以j要从0开始
        int id = tiezi[j].id;
        int ts = tiezi[j].ts;
        cnt[id]++;
        while(ts - tiezi[i].ts >= d){
            cnt[tiezi[i].id] -= 1;
            i++;
        }
        if(cnt[id] >= k) st[id] = true;
        // cout << cnt[1] << endl;
    }
    for(int i = 0;i < N;i++){
        if(st[i]) cout << i << endl;
    }
    return 0;
}
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
6月前
|
存储 算法
LeetCode刷题---209. 长度最小的子数组(双指针-滑动窗口)
LeetCode刷题---209. 长度最小的子数组(双指针-滑动窗口)
|
6月前
|
算法 容器 NoSQL
双指针扫描、滑动窗口
双指针扫描、滑动窗口
|
6月前
|
SQL 大数据 API
每天一道大厂SQL题【Day08】服务日志SQL统计
每天一道大厂SQL题【Day08】服务日志SQL统计
69 0
|
4天前
|
存储 运维 监控
API明细日志及运维统计日志全面提升API可运维性
在数字化转型的大潮中,数据已成为企业最宝贵的资产之一。而数据服务API可快速为数据应用提供数据接口。面对越来越多的API以及越来越多的应用调用,如何快速查看API的服务情况、异常情况及影响范围,以及查看API的调用详情,进行API的性能优化、错误排查变得越来越重要,本文将介绍如何配置和开通API运维统计及明细日志,以及如何查看日志进行介绍。
|
1月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
3月前
|
应用服务中间件 Linux nginx
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
|
5月前
|
Go C++
代码随想录——双指针/滑动窗口(二)
代码随想录——双指针/滑动窗口(二)
|
5月前
|
算法
双指针+滑动窗口
双指针+滑动窗口
|
6月前
DAY-2 | 哈希表、指针与区间划分:字符种数统计问题
```markdown ## 题干 [牛客网链接](https://www.nowcoder.com/practice/eb94f6a5b2ba49c6ac72d40b5ce95f50) ## 题解 1. **查表法(哈希表)**:利用数组标记出现过的 ASCII 值小于127的字符,首次出现计数,重复则忽略。 2. **指针与区间划分(回头法)**:遍历字符串,对每个字符检查其前所有字符是否重复,重复则不计数。 ## 方法总结 - 哈希表在去重问题中非常实用,可多做相关练习。 - 使用`continue`时注意避免死循环,确保循环变量会改变。 - 多回顾此类问题以巩固理解。 ```
44 2
|
5月前
|
Go C++
代码随想录——双指针与滑动窗口(四)
代码随想录——双指针与滑动窗口(四)