小明維護著乙個程式設計師論壇。現在他收集了乙份"點讚"日誌,日誌共有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一行。
一開始覺得這個題不算太難,因我我以為時間都是順序的,,,順序的花有的數甚至不用存
在網上學得方法....取尺法
(謝大佬!!!
本來想用map計數,結果後來想想,,,用個vector取個大小就可啊!!!!!!(嗚嗚嗚嗚嗚嗚嗚嗚嗚嗚嗚)
中間的judge堪稱絕妙,,,,雙指標遍歷,,,,,(我想我有時間的話會搞雙指標的專題的)
1 #include 2#define mem(a, b) memset(a, b, sizeof(a))
3#define mod 1000000007
4using
namespace
std;
5 typedef long
long
ll;6
const
int maxn = 1e5 + 5;7
const
double esp = 1e-7;8
const
int ff = 0x3f3f3f3f
;9 map::iterator it;
1011
intn, d, k;
12 vectort[maxn];
13int
ans[maxn];
1415
bool judge(int
x)16
33 r++;34}
3536
return
false;37
}3839int
main()
4051
52int cnt = 0;53
for (int i = 0; i < maxn; i++)
54if
(judge(i))
55 ans[++cnt] =i;
5657
for (int i = 1; i <= cnt; i++)
58 printf("
%d\n
", ans[i]);
5960
return0;
61 }
C語言雜記 0x0B
首先看兩個例子 一 二 這兩個例子裡面不同的地方就是s的不同,c語言程式在執行的時候記憶體分配有這樣的規則 區域性變數在棧中自動生成記憶體,比如上面所說的s就是在棧中生成記憶體 而s 指向的內存在常量區,就類似於我們在所有程式之前宣告char s 100 一樣 棧由編譯器自動生成釋放,而常量區的記憶...
2023年省賽b組
2000年的1月1日,是那一年的第1天。那麼,2000年的5月4日,是那一年的第幾天?注意 需要提交的是乙個整數,不要填寫任何多餘內容。includeint main printf 125 return 0 漢字的字形存在於字型檔中,即便在今天,16點陣的字型檔也仍然使用廣泛。16點陣的字型檔把每個...
2018湘潭大學程式設計競賽 B
題意 給你乙個字母矩陣,和測試組數,讓你統計字串的字元累計出現的次數,然後讓你找出需要找的字元,這個字元必須是每行每列裡出現次數最多的。題解 暴力瞎搞。map列舉一下啊。寫的十分暴力,絕對不是最優解。qaq。題好難讀,看了好久才懂樣例。1 include2 include 3 include4 in...