P1165 日誌分析

2021-10-20 22:35:13 字數 1153 閱讀 2899

題目描述

mm 海運公司最近要對旗下倉庫的貨物進出情況進行統計。目前他們所擁有的唯一記錄就是乙個記錄貨櫃進出情況的日誌。該日誌記錄了兩類操作:第一類操作為貨櫃入庫操作,以及該次入庫的貨櫃重量;第二類操作為貨櫃的出庫操作。這些記錄都嚴格按時間順序排列。貨櫃入庫和出庫的規則為先進後出,即每次出庫操作出庫的貨櫃為當前在倉庫裡所有貨櫃中最晚入庫的貨櫃。

出於分析目的,分析人員在日誌中隨機插入了若干第三類操作――查詢操作。分析日誌時,每遇到一次查詢操作,都要報告出當前倉庫中最大貨櫃的重量。

輸入格式

包含n+1n+1 行:

第一行為11 個正整數nn,對應於日誌內所含操作的總數。

接下來的nn行,分別屬於以下三種格式之一:

格式11: 0 x0x //一次貨櫃入庫操作,正整數xx表示該次入庫的貨櫃的重量

格式22: 11 //一次貨櫃出庫操作,(就當時而言)最**庫的貨櫃出庫

格式33: 22 //一次查詢操作,要求分析程式輸出當前倉庫內最大貨櫃的重量

當倉庫為空時你應該忽略出庫操作,當倉庫為空查詢時你應該輸出00。

輸出格式

輸出行數等於日誌中查詢操作的次數。每行為乙個正整數,表示查詢結果。

輸入輸出樣例

輸入 #1

130 1

0 22

0 40 221

2112

12輸出 #124

410說明/提示

對於20%20%的資料,有n≤10n≤10;

對於40%40%的資料,有n≤1000n≤1000;

對於100%100%的資料,有n≤200000,x≤10^8n≤200000,x≤108。

這道題難就難在查詢最大值,因為查詢輸出的是最大值,所以可以換一種思路,讓棧頂元素一直是最大值,如果要入棧的元素小於當前棧頂元素,則不讓他入棧,而是將棧頂元素再一次入棧(保持出棧入棧順序);如果大於棧頂元素就入棧。(小於最大值的資料在這道題中沒有用,所以可以不入棧)

#includeusing namespace std;

int main()

else if(m==1)//出棧

else if(m==2)//查詢

}system("pause");

return 0;

}

題解 P1165 日誌分析

原題 依舊是水題 基本思路 int stack 10005 void push int x 入棧 void pop 出棧 void calc 得出最大值當作者快樂地敲著 時,突發奇想 如果棧裡所儲存的都是最大值呢?帶著疑問,作者在草稿紙上演示幾遍,得出完整 作者蒟蒻。完整 include inclu...

luogu P1165 日誌分析

題目描述 m 海運公司最近要對旗下倉庫的貨物進出情況進行統計。目前他們所擁有的唯一記錄就是乙個記錄貨櫃進出情況的日誌。該日誌記錄了兩類操作 第一類操作為貨櫃入庫操作,以及該次入庫的貨櫃重量 第二類操作為貨櫃的出庫操作。這些記錄都嚴格按時間順序排列。貨櫃入庫和出庫的規則為先進後出,即每次出庫操作出庫的...

CodeVS沖杯之路 P1165

不充錢,你怎麼ac?題目 題目很簡單,最好寫樸實一點,不要想著哪些情況可以合併在一起啊等等 老老實實乙個個判斷,不然很容易出錯 細節很多,幸好樣例給的良心,可以檢測出很多細節 自己字串模擬即可,一定要細心!1 include2 include3 include4 include5 include6 ...