小k是乙個海港的海關工作人員,每天都有許多船隻到達海港,船上通常有很多來自不同國家的乘客。
小k對這些到達海港的船隻非常感興趣,他按照時間記錄下了到達海港的每一艘船隻情況;對於第i艘到達的船,他記錄了這艘船到達的時間ti (單位:秒),船上的乘 客數星ki,以及每名乘客的國籍 x(i,1), x(i,2),…,x(i,k);。
小k統計了n艘船的資訊,希望你幫忙計算出以每一艘船到達時間為止的24小時(24小時=86400秒)內所有乘船到達的乘客來自多少個不同的國家。
形式化地講,你需要計算n條資訊。對於輸出的第i條資訊,你需要統計滿足 ti - 86400 < tp <= ti的船隻p,在所有的x(p,j)中,總共有多少個不同的數。
輸入格式:
第一行輸入乙個正整數n,表示小k統計了 n艘船的資訊。
接下來n行,每行描述一艘船的資訊:前兩個整數ti和ki分別表示這艘船到達海港的時間和船上的乘客數量,接下來ki個整數x(i,j)表示船上乘客的國7。
保證輸入的ti是遞增的,單位是秒;表示從小k第一次上班開始計時,這艘船在第 ti 秒到達海港。保證,
,,
。其中表示所有的ki的和。
輸出格式:
輸出n行,第i行輸出乙個整數表示第i艘船到達後的統計資訊。
輸入樣例#1:
3輸出樣例#1:1 4 4 1 2 2
2 2 2 3
10 1 3
3輸入樣例#2:44
4輸出樣例#2:1 4 1 2 2 3
3 2 2 3
86401 2 3 4
86402 1 5
3334【分析】由於總人數受限制,可以考慮將人數作為數軸,雙指標掃。l停在最左邊,r停在最右邊。
#include #include#include
#include
#include
#include
#include
#include
#include
#include
#define inf 2e9
#define met(a,b) memset(a,b,sizeof a)typedef
long
long
ll;using
namespace
std;
const
int n = 3e5+5
;const
int m = 4e5+5
;int
n,m,k,sum,ans,cnt[n];
intpeo[n],boa[n],t[n];
intmain()
r+=boa[i];
if(t[i]-t[st]>=86400
) l+=boa[j];
st++;}}
printf(
"%d\n
",ans);
}return0;
}
洛谷 P2058 海港
題目描述 小k是乙個海港的海關工作人員,每天都有許多船隻到達海港,船上通常有很多來自不同國家的乘客。小k對這些到達海港的船隻非常感興趣,他按照時間記錄下了到達海港的每一艘船隻情況 對於第i艘到達的船,他記錄了這艘船到達的時間ti 單位 秒 船上的乘 客數星ki,以及每名乘客的國籍 x i,1 x i...
洛谷 P2058 海港
題目傳送 由於於題目保證輸入的ti是遞增的,所以 發現當我們統計完一艘船的答案後,這個答案多少會對下一艘船的答案有貢獻。同時還發現如果對每個艘船都記錄他的乘客在整個資料出現的所有國籍中相應出現的次數,在這道題的範圍下,顯然會爆空間,其實這個題如果按照一般的靜態陣列儲存的話,光是記錄每個船的乘客就會爆...
P2058 海港 (洛谷)
這個題複製過來真的有點噁心,懶得手打,以後再搬題面吧。今天我雙更了,ac這個題我就完成某谷春令營第一課的作業了 假的 這個題是個雙指標。非常友善。一直往裡讀入就可以了,遇見不是一條船的乘客輸出這一條船前86400秒有多少不同國籍的人,然後從末尾檢視,時間差大於等於86400的人清除,切記以上兩步不要...