P2058 海港 模擬 佇列

2021-10-09 19:04:00 字數 2420 閱讀 1514

題目描述

小k是乙個海港的海關工作人員,每天都有許多船隻到達海港,船上通常有很多來自不同國家的乘客。

小k對這些到達海港的船隻非常感興趣,他按照時間記錄下了到達海港的每一艘船隻情況;對於第i艘到達的船,他記錄了這艘船到達的時間ti (單位:秒),船上的乘 客數kik_iki​,以及每名乘客的國籍 xi,1,xi,2,…,xi,kx_, x_,…,x_xi,1​,xi,2​,…,xi,k​。

小k統計了nnn艘船的資訊,希望你幫忙計算出以每一艘船到達時間為止的242424小時(242424小時=864008640086400秒)內所有乘船到達的乘客來自多少個不同的國家。

形式化地講,你需要計算nnn條資訊。對於輸出的第iii條資訊,你需要統計滿足ti−86400第一行輸入乙個正整數nnn,表示小k統計了nnn艘船的資訊。

接下來nnn行,每行描述一艘船的資訊:前兩個整數tit_iti​和kik_iki​分別表示這艘船到達海港的時間和船上的乘客數量,接下來kik_iki​個整數xi,jx_xi,j​表示船上乘客的國籍。

保證輸入的tit_iti​是遞增的,單位是秒;表示從小k第一次上班開始計時,這艘船在第tit_iti​秒到達海港。

保證 1≤n≤1051 \le n \le 10^51≤n≤105,∑ki≤3∗105\sum \le 3*10^5 ∑ki≤3∗105 ,1≤x(i,j)≤1051\le x(i,j) \le 10^51≤x(i,j)≤105, 1≤t(i−1)≤ti≤1091 \le t(i-1)\le ti \le 10^91≤t(i−1)≤ti≤109。

其中∑ki\sum∑ki表示所有的kik_iki​的和。

輸出格式

輸出nnn行,第iii行輸出乙個整數表示第iii艘船到達後的統計資訊。

輸入輸出樣例

輸入 #1

31 4 4 1 2 2

2 2 2 3

10 1 3

輸出 #134

4輸入 #2

41 4 1 2 2 3

3 2 2 3

86401 2 3 4

86402 1 5

輸出 #233

34說明/提示

【樣例解釋1】

第一艘船在第111秒到達海港,最近242424小時到達的船是第一艘船,共有444個乘客, 分別是來自國家4,1,2,24,1,2,24,1,2,2,共來自333個不同的國家;

第二艘船在第222秒到達海港,最近242424小時到達的船是第一艘船和第二艘船,共有4+2=6 4 + 2 = 64+2=6個乘客,分別是來自國家4,1,2,2,2,34,1,2,2,2,34,1,2,2,2,3,共來自444個不同的國家;

第三艘船在第101010秒到達海港,最近242424小時到達的船是第一艘船、第二艘船和第 三艘船,共有4+2+1=74+ 2+1=74+2+1=7個乘客,分別是來自國家4,1,2,2,2,3,34,1,2,2,2,3,34,1,2,2,2,3,3,共來自444個不同 的國家。

【樣例解釋2】

第一艘船在第111秒到達海港,最近242424小時到達的船是第一艘船,共有444個乘客,分別是來自國家1,2,2,31,2,2,31,2,2,3,共來自333個不同的國家。

第二艘船在第333秒到達海港,最近242424小時到達的船是第一艘船和第二艘船,共有4+2=64+2=64+2=6個乘客,分別是來自國家1,2,2,3,2,31,2,2,3,2,31,2,2,3,2,3,共來自333個不同的國家。

第三艘船在第864018640186401秒到達海港,最近242424小時到達的船是第二艘船和第三艘船,共有2+2=42+2=42+2=4個乘客,分別是來自國家2,3,3,42,3,3,42,3,3,4,共來自333個不同的國家。

第四艘船在第864028640286402秒到達海港,最近242424小時到達的船是第二艘船、第三艘船和第四艘船,共有2+2+1=52+2+1=52+2+1=5個乘客,分別是來自國家2,3,3,4,52,3,3,4,52,3,3,4,5,共來自444個不同的國家。

#include

#include

#include

#include

using

namespace std;

const

int maxn =

1e5+10;

struct node

;int n;

int day =

86400

;int sum[maxn]

;int

main()

for(

int i =

1; i <= k; i++);

que.

push

(cur)

; sum[belong]++;

if(sum[belong]==1

) ans++;}

cout << ans << endl;

}return0;

}

題解 P2058 海港

我們注意到資料範圍,發現二維陣列並不可取,但是我們又注意到 k i 3 105 ki 3 10 5,所以採取一種新的思想 將所有人都讀在乙個一維陣列裡面 使用乙個佇列 q q 來儲存第 i role presentation i i艘船上人數的範圍,即 q q 儲存的是兩個數 l r role pr...

洛谷 P2058 海港

題目描述 小k是乙個海港的海關工作人員,每天都有許多船隻到達海港,船上通常有很多來自不同國家的乘客。小k對這些到達海港的船隻非常感興趣,他按照時間記錄下了到達海港的每一艘船隻情況 對於第i艘到達的船,他記錄了這艘船到達的時間ti 單位 秒 船上的乘 客數星ki,以及每名乘客的國籍 x i,1 x i...

洛谷 P2058 海港

題目傳送 由於於題目保證輸入的ti是遞增的,所以 發現當我們統計完一艘船的答案後,這個答案多少會對下一艘船的答案有貢獻。同時還發現如果對每個艘船都記錄他的乘客在整個資料出現的所有國籍中相應出現的次數,在這道題的範圍下,顯然會爆空間,其實這個題如果按照一般的靜態陣列儲存的話,光是記錄每個船的乘客就會爆...