首页 > 其他分享 >P1165 日志分析

P1165 日志分析

时间:2022-10-24 10:36:18浏览次数:48  
标签:分析 head P1165 集装箱 操作 日志 入库 出库

日志分析

题目描述

\(M\) 海运公司最近要对旗下仓库的货物进出情况进行统计。目前他们所拥有的唯一记录就是一个记录集装箱进出情况的日志。该日志记录了两类操作:第一类操作为集装箱入库操作,以及该次入库的集装箱重量;第二类操作为集装箱的出库操作。这些记录都严格按时间顺序排列。集装箱入库和出库的规则为先进后出,即每次出库操作出库的集装箱为当前在仓库里所有集装箱中最晚入库的集装箱。

出于分析目的,分析人员在日志中随机插入了若干第三类操作――查询操作。分析日志时,每遇到一次查询操作,都要报告出当前仓库中最大集装箱的重量。

输入格式

包含\(N+1\) 行:

第一行为\(1\) 个正整数\(N\),对应于日志内所含操作的总数。

接下来的$N $行,分别属于以下三种格式之一:

格式\(1\): \(0 X\) //一次集装箱入库操作,正整数\(X\)表示该次入库的集装箱的重量

格式\(2\): \(1\) //一次集装箱出库操作,(就当时而言)最后入库的集装箱出库

格式\(3\): \(2\) //一次查询操作,要求分析程序输出当前仓库内最大集装箱的重量

当仓库为空时你应该忽略出库操作,当仓库为空查询时你应该输出\(0\)。

输出格式

输出行数等于日志中查询操作的次数。每行为一个正整数,表示查询结果。

样例 #1

样例输入 #1

13
0 1
0 2
2
0 4
0 2
2
1
2
1
1
2
1
2

样例输出 #1

2
4
4
1
0

提示

对于\(20\%\)的数据,有\(N≤10\);

对于\(40\%\)的数据,有\(N≤1000\);

对于\(100\%\)的数据,有\(N≤200000,X≤10^8\)。

分析

  • 如果直接循环查询最大值,\(O(n^2)\), TLE
  • 考虑存储答案,查询的时候直接 \(O(1)\) 输出
  • \(ans[head]\) 表示当前栈内元素的最大值,如果有元素入队,则更新一下
  • 由于答案的更新总是比栈的操作慢一步,所以之前的最大值不会影响之后的答案。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e6+10, INF=0x3f3f3f3f;
int sta[N],ans[N],head=0,n,op,x;

int main(){
    scanf("%d",&n);
    while(n--){
        scanf("%d",&op);
        if(op==0){
            scanf("%d",&x);
            sta[++head] = x; // 入栈
            ans[head] = max(ans[head-1], x); // 更新答案
        }else if(op==1){
            if(head) head--;
        }else if(op==2){
            printf("%d\n",ans[head]);
        }
    }
    return 0;
}

标签:分析,head,P1165,集装箱,操作,日志,入库,出库
From: https://www.cnblogs.com/hellohebin/p/16820655.html

相关文章

  • 记一次 .NET 某娱乐聊天流平台 CPU 爆高分析
    一:背景1.讲故事前段时间有位朋友加微信,说他的程序直接CPU=100%,每次只能手工介入重启,让我帮忙看下到底怎么回事,哈哈,这种CPU打满的事故,程序员压力会非常大,我让朋友在CP......
  • django中APIView里的dispatch和as_view方法分析
    位置:fromrest_framework.viewsimportAPIView继承APIView类视图形式的路由:path('booksapiview/',views.BooksAPIView.as_view()),#在这个地方应该写个函数内存地址......
  • 日志文件包含漏洞
    日志文件包含漏洞日志包含漏洞属于是本地文件包含,同样服务器没有很好的过滤,或者是服务器配置不当导致用户进入了内网,本来常规用户是访问不了这些文件的,但由于发起访问请求......
  • Linux中tac命令倒序查询日志
    cat命令是正序开始查询日志比如:catxxx.log|grep"sssdsd"如果日志文件比较大,那么会很慢或者直接出错 可以使用tac命令,这个是cat反过来写tacxxx.log|grep"sssdsd"......
  • disc性格测试结果分析(disc性格测试结果分析23个D16个C)
    DISC的性格测评~~结果是S(15)I(15)C(8)D(2),求分析啊~~~~~~~~~~~计算你的各项得分,超过10分称为显性因子,可以作为性格测评的判断依据。低于10分称为隐性因子,对性格测......
  • PostgreSQL (慢SQL|数据库整体变慢|性能抖动) 数据库性能分析与优化方法
    背景本文将介绍三种数据库变慢场景的分析与优化方法.1、已经定位出的特定慢SQL2、整个数据库实例(几乎所有SQL)变慢,或者某些时候整个数据库实例大面积SQL变慢(大面积......
  • 基于AD Event日志识别域用户密码攻击
    01、简介针对域用户密码攻击,攻击者通常都会使用两种攻击方式进行测试,即:暴力破解(BruteForce)和密码喷洒(PasswordSpraying)。暴力破解(BruteForce)攻击,攻击者通过利用大量......
  • 海思3516系列芯片SPI速率慢问题深入分析与优化(基于PL022 SPI 控制器)
    海思3516系列芯片SPI速率慢问题深入分析与优化(基于PL022SPI控制器)我在某个海思主控的项目中需要使用SPI接口来驱动一块液晶屏,液晶屏主控为st7789,分辨率240x240,图像格......
  • 基于AD Event日志识别DCSync攻击
     01、简介DCSync攻击是一种常见的域控攻击方法,利用DCSync导出域内用户的哈希值,本质上就是利用DRS(DirectoryReplicationService)协议通过IDL_DRSGetNCChanges从域控......
  • 基于AD Event日志识别DCShadow攻击
    01、简介DCShadow攻击,是攻击者在获取到域管理员权限后,通过将沦陷的主机伪造成域控,将预先设定的对象或对象属性复制到正在运行的域控服务器中。DCSync&DCShadow区别在于,DC......