201909 4 csp推薦系統

2021-10-01 16:45:46 字數 1610 閱讀 4190

這道題其實就是簡單的模擬題,難點在於如何設計表,如何提高效率。如果單純使用vector在資料量比較大的情況下會出現超時。我在做題的時候考慮過使用vector來解題,會出現超時的情況,因為插入和刪除操作會導致vector內位置移動,會有大量操作。這一題可以使用set來解題,首先set的底層實際上是 乙個紅黑樹,即平衡二叉樹,這樣插入的效率基本上保持在logn。set是自動有序的,那麼對於查詢操作也很方便,其效率基本保持在n。實際上比較耗時的是刪除操作。我本來的想法是遍歷整張表,根據type 和id 找到要刪除的點之後再進行刪除操作,但是這樣操作的效率為n,如果我再維持一張表,根據提供的type和id ,我能夠得到完整的商品資訊,完整的商品資訊對於set表來說是key,根據這個key再去表中查詢刪除,其中查詢的效率僅為logn,相對來說速度有所提公升。

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

class

good

public

:good

(int _type,

int _id,

int _score)

bool

operator

<

(const good d)

const};

struct index

bool

operator

<

(const index d)

const};

intmain()

}int opnum ;

scanf

("%d"

,&opnum)

;while

(opnum--

)else

if(op ==2)

else

if(op ==3)

; vector<

int> res[

100]

;scanf

("%d"

,&sumnumber)

;for

(int k=

0; k

)for

(set

::iterator it = datamap.

begin()

; it!=datamap.

end(

)&&sumnumber;it++)}

for(

int p=

0; p

)else

cout << res[p]

[h];}}

cout << endl;}}

}return0;

}

**鏈

CSP 201909 4 推薦系統

題目描述 題意解讀 新增某類商品 刪除某類商品中的乙個 查詢商品 思路分析 滿分 include include include include include using namespace std typedef struct product 重定義 操作符,這決定了set的自動排序 bool ...

CCF CSP 201909 4 推薦系統

有m 0,49 類商品,每類商品有n 0,30000 個物品.初始時,給出第i有三種操作 其中總操作個數opnum 100000,查詢個數opask 100 求每次查詢時每類商品選出的商品編號 考點 問題需求理解能力 倒不如說出題人的表達能力 stl的熟練應用 時間複雜度的分析 問題建模能力。題目未...

CCF認證201909 4推薦系統

我的個人部落格 原題鏈結 ccf認證201909 4推薦系統 解題思路 錯誤思路 理解清楚題意再做題,這是前提啊。剛開始讀題的時候不明白下面這句話的意思。剛開始我的理解是。每個商品按分數從高到低選出ki個商品。我用vector set data m 存放商品的學校。其中data i 對應i類商品的所...