第九屆藍橋杯省賽第八題 日誌統計

2022-05-03 13:51:17 字數 2109 閱讀 8852

小明維護著乙個程式設計師論壇。現在他收集了乙份"點讚"日誌,日誌共有n行。其中每一行的格式是:

ts id

表示在ts時刻編號id的帖子收到乙個"贊"。

現在小明想統計有哪些帖子曾經是"熱帖"。如果乙個帖子曾在任意乙個長度為d的時間段內收到不少於k個讚,小明就認為這個帖子曾是"熱帖"。

具體來說,如果存在某個時刻t滿足該帖在[t, t+d)這段時間內(注意是左閉右開區間)收到不少於k個讚,該帖就曾是"熱帖"。

給定日誌,請你幫助小明統計出所有曾是"熱帖"的帖子編號。

【輸入格式】

第一行包含三個整數n、d和k。

以下n行每行一條日誌,包含兩個整數ts和id。

對於50%的資料,1 <= k <= n <= 1000

對於100%的資料,1 <= k <= n <= 100000 0 <= ts <= 100000 0 <= id <= 100000

【輸出格式】

按從小到大的順序輸出熱帖id。每個id一行。

【輸入樣例】

7 10 2

0 1

0 10

10 10

10 1

9 1100 3

100 3

【輸出樣例】

1 3

資源約定:

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗 < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。

注意:main函式需要返回0;

只使用ansi c/ansi c++ 標準;

不要呼叫依賴於編譯環境或作業系統的特殊函式。

所有依賴的函式必須明確地在原始檔中 #include

不能通過工程設定而省略常用標頭檔案。

提交程式時,注意選擇所期望的語言型別和編譯器型別。

這道題用到了乙個尺取法,尺取法通常是對陣列儲存一對下標,即所選取的區間的左右端點,然後根據實際情況不斷地推進區間左右端點以得出答案。

首先借助一道其他題目來說一下尺取法。

題意:給定乙個序列,使得其和大於或等於s,求最短的子串行長度。

分析:首先,序列都是正數,如果乙個區間其和大於等於s了,那麼不需要在向後推進右端點了,因為其和也肯定大於等於s但長度更長,所以,當區間和小於s時右端點向右移動,和大於等於s時,左端點向右移動以進一步找到最短的區間,如果右端點移動到區間末尾其和還不大於等於s,結束區間的列舉。

1 #include2 #include3 #include4

using

namespace

std;

5#define ll long long

6const

int maxn=1e5+5;7

#define inf 0x3f3f3f3f89

ll a[maxn];

10int n,t,ans=inf;

11ll sum,s;

1213

intmain()

20int st=0,en=0

;21 ans=inf;

22 sum=0;23

while(1)29

if(ans==inf) ans=0

;30 cout<32return0;

33 }

大致了解了尺取法,利用vector型的陣列這道題也就很簡單了。。。

1 #include2 #include3 #include4

using

namespace

std;

5const

int maxn=1e5+5;6

intn,d,k;

7 vectorjournal[maxn];89

void judge(vector& vec,int

id)20

else23}

24//

cout<<"cnt="<25

26if(cnt>=k)29}

30int

main()

37for( int i=0; i)

4041

return0;

42 }

藍橋杯 日誌統計(第九屆第八題)

小明維護著乙個程式設計師論壇。現在他收集了乙份 點讚 日誌,日誌共有n行。其中每一行的格式是 ts id 表示在ts時刻編號id的帖子收到乙個 贊 現在小明想統計有哪些帖子曾經是 熱帖 如果乙個帖子曾在任意乙個長度為d的時間段內收到不少於k個讚,小明就認為這個帖子曾是 熱帖 具體來說,如果存在某個時...

日誌統計 第九屆藍橋杯省賽題目八

小明維護著乙個程式設計師論壇。現在他收集了乙份 點讚 日誌,日誌共有n行。其中每一行的格式是 ts id 表示在ts時刻編號id的帖子收到乙個 贊 現在小明想統計有哪些帖子曾經是 熱帖 如果乙個帖子曾在任意乙個長度 為d的時間段內收到不少於k個讚,小明就認為這個帖子曾是 熱帖 具體來說,如果存在某個...

日誌統計 第九屆藍橋杯B組第八題(尺取法)

小明維護著乙個程式設計師論壇。現在他收集了乙份 點讚 日誌,日誌共有n行。其中每一行的格式是 ts id 表示在ts時刻編號id的帖子收到乙個 贊 現在小明想統計有哪些帖子曾經是 熱帖 如果乙個帖子曾在任意乙個長度為d的時間段內收到不少於k個讚,小明就認為這個帖子曾是 熱帖 具體來說,如果存在某個時...