超載融合-1
26號(hào)的雙周賽,就做出來(lái)第一道題......換作平時(shí)我肯定留下一句“我是傻逼”然后繼續(xù)打LOL,但唯一一道我以為有可能做出來(lái)的題,賽后怎么都做不出來(lái)。
現(xiàn)在再看,“一壺茶,一包煙,一道題,做一天?!边@句話只是在玩梗,因?yàn)橛袀€(gè)SB做了整整三天:

事到如今沒(méi)什么好多說(shuō)的,就是單純的豬腦過(guò)載,智商問(wèn)題。題目本身難度不高,真的不高,但我就是想不明白,關(guān)鍵的地方就是想不出來(lái)。
我沒(méi)看別人的題解,但掃了一眼這題的標(biāo)準(zhǔn)解法應(yīng)該是并查集,但DFS也可以做,只是如果直接去DFS,結(jié)果就是會(huì)卡在n=100000,因?yàn)闀r(shí)間復(fù)雜度是n^2。
這就是最終的代碼,是看了

以后想出來(lái)的。大佬用的是python,關(guān)鍵的思路是建圖,但是Java沒(méi)有圖這種東西,用一個(gè)boolean二維數(shù)組代替圖的話,會(huì)觸發(fā)內(nèi)存限制,最后改用List才通過(guò),但內(nèi)存占用還是高的離譜。
如果不看這個(gè)視頻,我大概還卡在100000那個(gè)超時(shí)的例子上,而且就這還是花了兩天想出來(lái)的,前幾天的代碼甚至基本的邏輯都是錯(cuò)的。
這是我不看題解的極限,一眼看過(guò)去就知道是屎一樣的代碼。也不知道為什么,我總是把簡(jiǎn)單的問(wèn)題變得復(fù)雜,腦子好像有什么大坑一樣,遇到問(wèn)題首先不是冷靜分析,而是先試著改代碼,也不知道自己改的是什么,總之就是一頓改,最后自己都看不懂,能跑就跑,不能就再?gòu)?開(kāi)始重復(fù)這個(gè)制造垃圾代碼的循環(huán)。
有點(diǎn)匪夷所思,我都已經(jīng)用visited記錄找過(guò)的數(shù)字了,還額外用sacnned記錄訪問(wèn)過(guò)的節(jié)點(diǎn),還把訪問(wèn)過(guò)的節(jié)點(diǎn)置為-1。到底是有多NT才能寫(xiě)出這種代碼。
還有那個(gè)惡心到極點(diǎn)的if else if,明明就可以把第一次調(diào)用和之后的調(diào)用用同樣的邏輯整合起來(lái),但我就是不,我就要寫(xiě)if else,還要把同樣的邏輯在兩個(gè)代碼塊里面分別復(fù)制一份。
還有這個(gè)from,既然已經(jīng)記錄找過(guò)的數(shù)字了,from的意義在哪。不,說(shuō)到底,記錄找過(guò)的數(shù)字和訪問(wèn)過(guò)的節(jié)點(diǎn),兩者選一個(gè)就行了,兩件事都做顯然重復(fù)了。
還有這個(gè),從左找到右的想法。大概是示例那里形成閉環(huán)了,我就被誤導(dǎo)覺(jué)得找到一個(gè)連通塊就是從起點(diǎn)找能回到終點(diǎn)——這個(gè)想法貫穿了我所有的代碼。
莫名其妙,意義不明。真的意義不明。
‘沒(méi)力氣吐槽這代碼究竟有多不合理了。
中間還試過(guò)記憶化搜索,動(dòng)態(tài)規(guī)劃,但顯然不是很適合這道題,也沒(méi)做出個(gè)什么結(jié)果。
還有各種亂七八糟的解法,其實(shí)本質(zhì)上都沒(méi)有區(qū)別,等于說(shuō)三天的思考百分之九十五都是無(wú)用功。
以后還是少說(shuō)我是傻逼,我是fw之類(lèi)的話,心理學(xué)的角度上來(lái)看可能真的就變成傻逼和fw了。這種事自己知道就好了,說(shuō)出來(lái)只是別有用心。
總之老老實(shí)實(shí)做題,學(xué)習(xí),思考就是了。智商的差距用經(jīng)驗(yàn)是可以彌補(bǔ)的。
小目標(biāo):
1.每周都參賽。
2.做完前兩道題。
3.困難題保證邏輯正確,時(shí)間和內(nèi)存不考慮。
4.AK一次周賽。