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