1. 程式人生 > >四連測總結

四連測總結

前言

    在這次考試中,八道題,我並沒有突出的地方,甚至比許多,或者是所有的同學都更差勁。所以我認為,我有必要好好地總結一下這段時間的學習。

    不知道為什麼,總感覺這段時間好像並沒有在狀態,有的時候能夠想到一些關於這道題的演算法或者是思路,但是就是捅不破那層窗戶紙。也就是能夠想到一些,但是並不完全,有時老師一講就恍然大悟,但是自己單獨做的話卻又不可能想得出來。當然,這也說明了我的思考能力和程式碼實現能力還是不夠。看得出來,這也說明了我的做題的時間還是少了,並沒有給程式設計太多練習的時間。

    同時,我覺得最近我好像並沒有太重視讀書、預習這一塊,也許也是因為我的時間規劃能力不強,導致並沒有能夠持續的學習新知識,只是被動的學習而已。這次考試似乎也給我敲響了警鐘,是時候應該更刻苦的鑽研了,不要等到那一步的時候再來後悔現在。

    接著就題來反思一下最近的狀態。

考試狀態

A:猴子

在這道題中,我光看題就看了很久,可以說浪費了很多的時間來理解這些題。

好不容易讀懂後,立馬就想到了dp求解,可是dp方程轉移卻怎麼都想不出來。這或許也是因為平時練少了的緣故吧。

此路不通,只好換方向。於是就想到用一個單純的單調佇列來解題。但因為時間所剩無幾,於是只想到了一些就開始打程式碼了。也正因為如此,思路並不連續,最後打完以後也漏洞百出。

可以看到,以後還是需要對dp的版塊好好加強針對練習一下

B:電話線路

因為時間實在太短了,所以當時我決定賭一把,希望資料比較水,然後一個簡單的爆搜能夠騙幾個點的分 雖然其實並沒有

 。

也許在當時,這種技巧是可取的,畢竟防不勝防,萬一RP剛好爆棚呢。只不過在時間充足的情況下,自我認為還是要努力地去想正解,實在想不出來,也可以在完善一下搜尋的程式碼,多測幾組資料。

畢竟,在一場考試中,不可能所有的題都會做,或者是都有思路,那麼這個時候應該看的就是思考怎麼得到部分分,或者是利用爆搜 亂搞 騙取部分分。我是明白了一個道理:能騙分的程式碼都應該是好程式碼

C:測量溫度

這是第二場考試,可能是當時大腦比較 亢奮 靠譜,所以我看完題後不久便想出了自認為的思路,但是仔細一想後卻發現我這個思路只跟前一個狀態有關,也就是說是O(n)的複雜度。

只要是個人都應該知道這個用列舉模擬都可以過!但是當時也沒想這麼多,畢竟草稿本上是這樣子的啊。於是便不再多想,甚至連其他思路都沒有在涉及,直接就開始敲程式碼了。

或許從這裡已經可以看出來了,為什麼有些時候感覺好像有些題我都想到了一些邊邊角角,但是卻想不完的原因了,也許就是因為在想完一道題後,並沒有在思考哪裡有沒有紕漏或者是有沒有更優的方法

D:奶牛慢跑

在讀完題後不久,我就想到了以前做過的 某道子序列的題 導彈攔截了,但是當時腦殼發昏並不清楚這到底是下降子序列還是上升子序列,所以我就準備都打一遍。

當然,在打之前我突然想到子序列是O(n^{2})啊,這麼一做肯定超時。我就想能不能用單調棧給優化一下。可是說好說,做卻難了。不管我怎麼抓破頭皮都沒想出來怎麼辦。但是我卻忘了前不久才做過的用lower_bound優化子序列的nlogn演算法,這個就綽綽有餘了。

自然,打完以後我還是想了許久,都沒想到應該怎麼辦,卻讓時間在這裡流逝。

可以看到,這裡反映出了一個自認為比較嚴重的毛病,同時也應該是其他同學也容易犯的了吧(如果不是請跳過):做出一道題後,並不會總結這道題的本質,也並沒有仔細深入的研究它所想考察的演算法,或者是沒有把它與其他題聯絡起來,做一個變式。

E:路徑規劃  &  F:奶牛飛盤

當然在這裡,其實我並不想說什麼多的,主要是因為前兩道題耽誤了比較多的時間,導致這兩道題並沒有足夠的時間來思考。

其實我也出現了一個很嚴重的誤區:認為一個考試後兩道題或一道題都是最難的,所以真正能夠抓到的只是前兩道題罷了。後幾道題只是打點爆搜來騙騙分,過過樣例,心裡有個安慰而已。

但殊不知,其實這次考試第三題並不難想 在考完以後也是心中毫無波瀾,甚至還想笑 ,心裡當然也是有點不甘。

所以說啊,在每次考試前的十分鐘,就應該先把應該打的標頭檔案啊,讀優寫優啊,freopen啊,都先打好,其次就是把所有的題來通看一遍,在心中粗略的排個序以後,再先難後易地去細緻的解決題。

G:圓形穀倉

當然,這裡更反映出了一個問題:看懂題目很重要,文化課的成績絕對不能落下!同時,如果實在沒看懂樣例的話就去找老師尋求解釋,我相信應該還是會說的吧(可能會也可能不會)。

在這裡,我就吃了一個大虧,幾次三番的大幅刪減更改程式碼,就是因為每次在以為想對以後開始打到半途,卻突然發現不對頭,又只能倒回去去看樣例。這樣幾次下來,時間還充足才怪嘞。所以最後很悲催的就是,不僅耽誤了下一道題的時間,也依舊沒有做對。

H:籬笆

敷衍的看完題後,顯然已經沒有時間再繼續做了,所以只好打完樣例草草了事。自然,當時我就覺得可能這次考試不太理想,已經有了緊迫的意識,可是卻又不太知道該怎麼應對,便有些心慌了。

再在這裡重申:時間把控能力很重要啊~重要啊~要啊~啊~

I:擁擠的奶牛

在思考了一會後,我發現這道題跟滑動視窗差不多。當時我想的是用下降的佇列來儲存高度,如果他什麼時候被踢出去了,那麼擁擠的奶牛就會加一。主要是因為他如果入隊,前面還有值的話,那麼就相當於他已經左邊是有比他高的奶牛了。

可是在打程式碼的時候我卻忘了一些小的判斷語句,只是一個單純的ans ++,所以錯誤是應該的。不過我認為我這個思路應該沒什麼大問題,至少是可取的。

所以在程式碼打之前思考的時候,想到什麼有用的東西應該及時記錄下來,不要讓它白白消失。

J:滑雪場的高度差

這道題是這次考試的最後一道題,但是我認為其實並沒有太大的難度。

在讀完題後不久,我就覺得這應該可以用搜索來實現,當然像這種的話我是更傾向於BFS的(事實證明也確實是BFS)。

但是在打完除錯時,我卻發現了有一點不對頭,所以就又想了一會,好不容易解決後,卻發現答案依舊不對,於是我就調了很久很久,最後終於想到可以用二分引數輔助實現,於是就跟上面一樣,大幅刪改程式碼,但是改完後卻還是不對,我又調了一會還是沒找出來,正好也是要交題了,所以便放棄不想。

後面才發現是每次重新走時忘了賦初值導致的,當時也是有些心累。

在打完後發現答案不對時,先不要忙著除錯,靜態查一查錯,也許就會發現有什麼簡單的低階錯誤,畢竟這種錯誤在除錯時是很難調出來的。

K:彈簧高蹺

這道題在讀完題後我果斷決定DFS爆搜,因為我覺得這可能是dp或者是其他什麼,但真的懶得想了,就準備先把爆搜打著保險,萬一等會沒時間了呢。

而且我怕單純的爆搜可能會超時,還專門用記憶化陣列儲存希望可以多騙幾個點 然而其實並沒有什麼用 

這道題我也不想說太多,畢竟現在還沒做出來呢。

L:穀倉

最後一次考試了,或許是有了一個包袱,感覺這次考試也一如既往的並不理想。

當然,這之間還是有一些小波瀾,具體就不解釋了,反正還是重複一下,語文是國學精髓!我大漢語博大精深!還是得搞好語文(當然並不是說英語什麼的就不重要了哈)。

不知道為什麼,打出來過完樣例之後還是錯的,可能是思路還有些不對吧。

未來規劃

當然現在說這個我也確實有點說不出來,肯定不想退出啊,畢竟學了這麼久,怎麼說也都有感情了吧,還是希望能夠繼續走下去呢。

這段時間也確實暴露出了一些比較嚴重的問題,肯定是在學習的時候同樣也得複習一下以前學過的知識,夯實基礎吧。

當然學習一下怎麼把控時間,怎麼更高效的學習與思考,同樣重要的還有程式碼實現能力。

聽課肯定還是得好好聽,跟著老師思路走,聽君一席談勝讀十年書嘛,不會的也要抓緊問,同時還要思考一下為什麼要這麼想,老師跟我想的思路有什麼差異,為什麼會出現這些呢。都還是需要總結一下。

現在最要緊的版塊應該就是dp這方面了,可能還有遞推什麼的也需要針對練習,多動腦,別一碰到什麼比較難的題就放棄,越是不會越要鍛鍊,這樣才能有所提高。