我們注意到資料範圍,發現二維陣列並不可取,但是我們又注意到∑k
i≤3∗
105∑ki
≤3∗10
5,所以採取一種新的思想:將所有人都讀在乙個一維陣列裡面:使用乙個佇列
q q
來儲存第
i' role="presentation">i
i艘船上人數的範圍,即
q q
儲存的是兩個數[l
,r]' role="presentation">[l,
r][l
,r],其中表示第
i i
艘船上的人從
l' role="presentation">l
l開始,從
r r
結束。
定義乙個ma
p' role="presentation">map
map型別
m m
,用來記錄當前86400秒內每種國家有多少人。並且我們知道,如果第
x' role="presentation">x
x艘船的抵達時間已經比第
y y
艘船的抵達時間超過了86400秒,那麼還未抵達的船的抵達時間也肯定超過了第
y' role="presentation">y
y艘船86400秒,因此我們可以開乙個變數ft,用來表示當前距離第
i i
艘船小於86400秒且編號最小的船的編號。那麼這就是基本的框架。
洛谷 P2058 海港
題目描述 小k是乙個海港的海關工作人員,每天都有許多船隻到達海港,船上通常有很多來自不同國家的乘客。小k對這些到達海港的船隻非常感興趣,他按照時間記錄下了到達海港的每一艘船隻情況 對於第i艘到達的船,他記錄了這艘船到達的時間ti 單位 秒 船上的乘 客數星ki,以及每名乘客的國籍 x i,1 x i...
P2058 海港 模擬 佇列
題目描述 小k是乙個海港的海關工作人員,每天都有許多船隻到達海港,船上通常有很多來自不同國家的乘客。小k對這些到達海港的船隻非常感興趣,他按照時間記錄下了到達海港的每一艘船隻情況 對於第i艘到達的船,他記錄了這艘船到達的時間ti 單位 秒 船上的乘 客數kik iki 以及每名乘客的國籍 xi,1,...
洛谷 P2058 海港
題目傳送 由於於題目保證輸入的ti是遞增的,所以 發現當我們統計完一艘船的答案後,這個答案多少會對下一艘船的答案有貢獻。同時還發現如果對每個艘船都記錄他的乘客在整個資料出現的所有國籍中相應出現的次數,在這道題的範圍下,顯然會爆空間,其實這個題如果按照一般的靜態陣列儲存的話,光是記錄每個船的乘客就會爆...