#11108: 解題心得


a5083 (assassin刺客大師)

學校 : 新北市立板橋高級中學
編號 : 28347
來源 : [140.116.138.99]
最後登入時間 :
2017-06-27 17:13:56
d716. Unique Snowflakes(強化版) -- UVa11572加強版 | From: [140.123.56.238] | 發表日期 : 2016-06-28 15:13

前言:

本以為我在d194 的解法,在這題不適用,結果最後還是可以ac

STL 的 set容器真的太強大了

 

我解這題的想法如下

以此範例為例,有5個數字

一開始集合的元素為0個(因為都沒有選數字),所以我們加入陣列第一個元素到集合中變成下圖

 (集合中現在有元素 1 了)

如果接下來遇到陣列的元素中arr[1] arr[2]...,集合都沒有出現同樣的元素,我們就可以把該數字加到集合中

所以變成如下

(集合中有元素 1 2 3)

 

如果遇到陣列的元素中(arr[3] = 2),集合已經存在該元素,則我們就從陣列的前端開始找是集合的哪個元素arr[3]相同

找元素的時候如果陣列前端的元素與arr[3]不同就從集合中踢出

(arr[0]被踢出集合,arr[1]和arr[3]相同所以停止搜尋,現在集合的元素為 3 2)

 

大致想法就是這樣

然後答案就是集合元素最多時的個數

集合記得用STL的set來完成,當然你也可以自己寫一個集合的資料結構,但搜尋集合元素時不可用循序搜尋(就是暴力搜尋),否則一定會超時...

 

 

 

 
ZeroJudge Forum