UVa百題總結

2022-04-11 01:02:25 字數 1398 閱讀 5554

總算刷夠《演算法競賽入門經典》100題了,就像教主所說,有了練acm的誠意,受自身水平和眼界所限,這總結難免會有一些個人色彩和不正確的地方,大牛勿噴。另外我的文筆可能極其拙劣,將就著看吧。

按照教主的進度安排,最理想的情況是寒假學完前八章,下學期開始學動態規劃、數學和圖論的基礎,為暑假集訓打下基礎。暑假開始學各方面高階的包括訓練指南和acm近幾年新的演算法,順便把把第一本書查缺補漏。從第八章開始也就是第三部分,就得開始轉化思路,思路開了,很多題就會覺得簡單。

個人感覺這100道題刷的還是有點急,有部分題特別是中期,過分依賴題解,有些題明知可以用多種做法,或者有更好的更值得學習的演算法解決,卻沒有研究,我覺得這是不應該的。

獨立思考是一種很重要的習慣,單純的看題解就像是背**,雖說是站在了巨人的肩膀上,但沒有形成自己的思路,比賽可能就會屢屢受挫。比較好的方法是自己做出來之後檢視題解,看看有沒有占用時間和記憶體更少的方法,拓展思路。或者是在做不出來了在看題解。

一位學長的總結是:acm水平= σ思考量*難度 + 經驗的累積 + 一點點天賦。

還有關於刷題是刷不動的問題,還是比較常見的,幾乎每刷一章時都有這樣的感覺,但是當刷到後面幾章回過頭來看看,當時怎麼也不會做的,突然就有了思路,甚至把當時的**稍微一修改就ac了。乙個比較好的做題方法是,便往後啃比較難理解需要很多思考的演算法,邊回過頭來做之前沒有做出來的題,這樣來來回回幾次,既能複習了之前的內容,也能給自己一些時間理解後面的演算法。

另外這兩天一直在搞統計和分析集訓隊成員題數的專案,算是上大學第乙個正兒八經的專案吧。經歷了十幾次修修補補,6個版本,終於完成了能夠正確統計和算分基本功能的程式。這個專案對我的幫助還是蠻大的,首先就是學會了多檔案模組化的程式設計,用第一次在codeblocks中乙個project用了1個頭檔案+8個原始檔,會用了條件編譯和外部變數宣告。還有就是專案之前的基本思維決定了你的程式的檔次,練acm也有一段時間了,該把學過的資料結構拿出來用在工程上就得用才行。比如說這個專案中用資料結構中的樹就要比陣列好得多,功能強大適應性也更強。

經過第乙個大版本的完成,發現自己不細心的毛病是比較嚴重的,每次交上去都有好幾個bug。另外程式的介面化做的不夠好,每次新增個功能,或者是修改個需求,感覺需要改很多很多地方。還有一點,交付上級軟體不是讓上級給你測試軟體的,這點務必要注意到(剛開始有幾個版本,交上去竟然打不開程式!)。

其實做專案就是這樣,自己做永遠是自己的思路,禁錮在那裡,自己湊出來了跟別人搭不起來完全沒用。最好是團隊一起做,各有分工,又有合作,工程化管理,然後有老師指導,才會有效果,才能學到書本上學不到的東西。特別是軟體工程這一行。做專案也不容易,雖然賺錢,也不比acm簡單。

接下來的20多天,按照老師的計畫,是完成紫書前八章的內容,這個任務估計是完不成了,盡量往後做吧,還想學學python呢,兩者一塊來,順便在linux下操作下,感覺任務好多啊,有點貪多。慢慢來吧,還有很長的路要走。

哎,從小語文不及格,我感覺我寫篇文章比寫個程式費事多了,哈哈。

python 百錢百雞題

例子 有100文錢,要買100隻雞,公雞5文乙隻,母雞3文乙隻,小雞三隻一文,問公雞母雞小雞各多少只?方法一 1 usr bin env python2 coding utf 8 3for a in range 100 5 1 4for b in range 100 3 1 5for c in ra...

uva11401 數學基礎題

題目的大意是 現在有1.n總共n個不同的數字,從裡面任選三個作為三邊長,能構成三角形的個數一共有多少個。解答 設c x 是最長邊為x時的三角形個數,那麼要求的答案就等於c 1 c 2 c x 所以主要需要解決的是c x 又設三邊長分別為x,y,z,由x y z x得到 1.當y 1時,z有0個解 2...

uva 12304 幾何模板題

uva12304 2d geometry 110 in 1 rujia liu include include include include include include includeusing namespace std const double eps 1e 6 int dcmp doub...