首页 > 其他分享 >Acwing 1238. 日志统计(双指针)

Acwing 1238. 日志统计(双指针)

时间:2023-02-27 19:11:16浏览次数:50  
标签:10 const int LL 1238 -- 日志 id Acwing

https://www.acwing.com/problem/content/1240/

1238. 日志统计

输入样例:
7 10 2
0 1
0 10
10 10
10 1
9 1
100 3
100 3
输出样例:
1
3

首先注意数据范围,0-1e5的数据范围,两层循环的话肯定是会爆时的,这就需要优化到O(n)的时间之内

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18,MINN=31;
const LL N=1e6+10,M=4010;
const double PI=3.1415926535;
#define endl '\n'
PII a[N];
bool st[N];
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    int T=1;
    //cin>>T;
    while(T--)
    {
        LL n,d,k;
        cin>>n>>d>>k;
        for(int i=0;i<n;i++)
        {
            //在a[i].first这个时间点给a[i].second点了一个赞
            cin>>a[i].first>>a[i].second;
        }
        sort(a,a+n);//按照时间顺序进行排序
        /*for(int i=0;i<n;i++)
        {
            cout<<a[i].first<<" "<<a[i].second<<endl;
        }*/
        map<LL,LL> mp;
        for(int i=0,j=0;i<n;i++)//按照已知点赞的时间顺序往后排列搜索
        {
            int id=a[i].second;//这个id
            mp[id]++;//j时刻给id记录一下(为啥j从0开始?因为时间是从0开始的)
            while(a[i].first-a[j].first>=d)//如果当前时间点到j这个时间点长度会大于d的话(时间拉的太长了)
            {
                mp[a[j].second]--;//减去我指针移动到的地方的id,管它有没有东西,我直接--,因为后续不再搜索这个id了
                j++;//时间往右边收缩
            }
            if(mp[id]>=k) st[id]=true;//如果id数量达标,标记id位置
        }
        for(int i=0;i<1e5+10;i++)
        {
            if(st[i]) cout<<i<<endl;
        }
    }
    return 0;
}

标签:10,const,int,LL,1238,--,日志,id,Acwing
From: https://www.cnblogs.com/Vivian-0918/p/17161512.html

相关文章

  • 后台日志封装、前后端分离的rbac项目演示、全局异常处理封装、封装Response、luffy数
    目录1后台日志封装2前后端分离的rbac项目演示3全局异常处理封装3封装Response4luffy数据库创建4.1创建用户创建库4.2使用项目连接库5软件开发模式6User模块用户表......
  • mysql开启慢查询日志
    前言:mysql数据库默认没有开启慢查询日志,需要我们手动去设置这个参数;慢查询,它的主要作用是定位那些执行时间比较长的sql语句,运行时间超过long_query_time值的SQL(long_query_......
  • 1 后台日志封装、 2 前后端分离的rbac项目演示、 3 全局异常处理封装、 4 封装Respons
    目录1后台日志封装2前后端分离的rbac项目演示3全局异常处理封装4封装Response5luffy数据库创建5.1创建用户创建库5.2使用项目连接库6软件开发模式7User模块用户表......
  • 【复盘】搭建日志平台的复盘与思考
    目录背景日志规范日志索引设计索引分片设计ILM的使用利用日志平台的数据统计总结背景20年利用ELK为公司搭建一个日志平台,但由于那时技术和视野有限,遇到的问题感觉还可以......
  • acwing 281 硬币
    给定n种硬币,其中第i种硬币的面值为Ai,共有piCi个。从中选出若干个硬币,把面值相加,若结果为sS,则称“面值sS能被拼成”。求1∼M1~M之间能被拼成的面值有多少个。#i......
  • loguru日志模块使用
    loguru日志模块使用  相比于logging模块,loguru模块使用起来更方便,并且可以根据不同日志级别,进行不同颜色输出一、安装pipinstallloguru二、基本使用代码......
  • oracle11g SAP测试机归档日志暴增排查(一)
       现象是oracle11g空间一天很快就被归档日志增加的文件爆满了,空间没有,oracle也不正常,当然sap也出现异常了。  看空间是就是/oracle没有空间了,用du*-sh很快找到......
  • oracle11g SAP测试机归档日志暴增排查(二)
        接上面一的内容,通过logminer可以知道是因为oracle11g设置awr快照引起的插入数据,所以要看这个插入是否正常。   之前也发现SYSAUX表空间也没有多少了,应该这......
  • shell脚本定时任务转移项目日志
    1、之前同时项目部署在根目录,根目录磁盘空间40G,运行一年后日志占了18G的磁盘空间,根目录只有几个G的磁盘空间,现在写shell脚本定时转移日志文件到挂载的磁盘目录下2、编写s......
  • Oracle alert.log日志出现:Thread 1 cannot allocate new log
    参考链接:https://blog.csdn.net/joinplay/article/details/232559411、查找oracle错误日志存放目录(sqlplus登录sysdba执行):showparameterbackground_dump_dest查看aler......