藍橋杯第九屆之日誌統計

2021-09-11 02:20:48 字數 1425 閱讀 5871

藍橋杯第九屆(c/c++b組)題目彙總及解析

小明維護著乙個程式設計師論壇。現在他收集了乙份"點讚"日誌,日誌共有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

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

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

解析:先將二維陣列按id從小到大排序,id相等的基礎上ts從小到大排序,然後可以擬作每乙個相等的id為乙個小部分,若某乙個小部分的id出現的次數小於題目要求的k則可以直接跳過,對下乙個小部分進行操作。設sf為每個小部分的首下標、se為尾下標、f為首id、e為尾id,在每個小部分從sf開始se++往下遍歷,若滿足條件則輸出該id,否則遍歷下乙個小部分

#include using namespace std;

typedef struct

st;st s[1005];

bool cmp(st x,st y)

sort(s,s+n,cmp);

cout<=k)

else i=i+a[s[sf].id]-1;//防止i重複訪問,直接跳過

}return 0;

}

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

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

藍橋杯第九屆決賽

x星球的鈔票的面額只有 100元,5元,2元,1元,共4種。小明去x星旅遊,他手裡只有2張100元的x星幣,太不方便,恰好路過x星銀行就去換零錢。小明有點強迫症,他堅持要求200元換出的零鈔中2元的張數剛好是1元的張數的10倍,剩下的當然都是5元面額的。銀行的工作人員有點為難,你能幫助算出 在滿足小...

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

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