Posted on 2010-03-26 09:40
Onway 閱讀(187)
評論(0) 編輯 收藏 引用 所屬分類:
傷不起的ACM
PKU1308
好像是星期二晚看的題,一個小時寫出來,錯了,看了discuss,有些數據確實不能過,自己也沒考慮到。也夠鐘熄燈睡覺了,只能擱下這個題了。星期三,上課。星期四,去醫院,回來沒啥心思,有心思那個時候斷網了。
一直留到今天星期五的早上。其實這個題真的沒啥好說的,算法和數據結構都沒啥特別,就是要考慮很周全,對著這個題目,要問很多個“這樣可不可以呢”,漏問一個可能就錯了,問了還得記下來,不然寫的時候可能又漏。
寫的時候及之前,我就是這么做的,寫的過程很吃力,結果還是漏掉了很多情況,而郁悶的是我考慮的情況都不是題目要考慮的。特別的是我漏的情況都是屬于邊界數據之類的,在出這些數據的能力還是很差。
還要提醒自己的是,很多情況分析后一定要看看有沒有同屬的情況,不然真的寫得很累。
PKU1861
在PKU1861里,循環下標從一開始,但我用了vector的push_back,sort,都沒有注意這個問題,在試調花了不少時間,還導致了一個Validator Error,當然將相同代碼再提交就WA了,不知道怎么回事。
暫結:
1.可以只用一個關系數組來作輔助
2.關系中的合并與查找可以寫得不那么分明,畢竟也只有幾個語句。當然分兩個函數來寫,思路都結構都會比較清晰。
3.判斷兩個對象所在集合不能直接用關系數組進行一次對比,即不能通過比較父親,而是要循環到集合頂點,即祖先。
4.同樣,合并兩個對象,也要找到集合頂點。
5.并查集還有路徑壓縮的東西。
ps:在杭電找了幾個說是并查集的題,看了兩個,不會做。感覺有點難,看起來也不像并查集。還是先這樣吧,校賽將近,還有別的要復習準備,不能一個算法吊死。