藍橋 日誌統計 尺取法

2021-10-23 04:08:13 字數 1700 閱讀 7698

思路:把相同的id放到一起 按時間從小到大排序 尺取判斷即可

有個大坑的點是 id從0開始!!!太坑了 !!!

下面是ac**:

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define inf 0x3f3f3f3f

#define sd(a) scanf("%d",&a)

#define sdd(a,b) scanf("%d%d",&a,&b)

#define cl(a,b) memset(a,b,sizeof(a))

#define rep(i,a,n) for(int i=a;i<=n;i++)

#define sddd(a,b,c) scanf("%d%d%d",&a,&b,&c)

#define dbg() printf("aaa\n")

using

namespace std;

const

int maxn=

1e5+10;

int n,d,t;

struct node

}a[maxn]

;vector<

int> g[maxn]

;priority_queue<

int,vector<

int>

,greater<

int>

> ans;

intmain()

int maxid=0;

sort

(a+1

,a+n+1)

;rep

(i,1

,n)rep

(i,0

,maxid)

else

if(maxx>=t)

break;}

if(maxx>=t) ans.

push

(i);

}while

(!ans.

empty()

)return0;

}

題目描述

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

10 10

10 1

9 1100 3

100 3

樣例輸出13

藍橋杯2018初賽 日誌統計 尺取法

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

尺取法,藍橋

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

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

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