主要是做圖論
floyd-warshall演算法,是用來求每對結點間的最短路徑的動態規劃演算法。(黑書p307)
最短路徑具有最優子結構,設d[i,j,k]是在只允許經過結點[1…k]的情況下,i到j的最短路徑。那麼有兩種情況:
如果最短路徑經過k,則d[i,j,k]等於d[i,k,k-1]+d[k,j,k-1]
如果最短路徑不經過k,則d[i,j,k]等於d[i,j,k-1]
可得到狀態轉移方程:d[i,j,k] = min。用二維陣列儲存d[i][j]。k從1到n,逐漸更新陣列,最後可得到每對結點間的最短路徑。時間複雜度是o(n^3),空間複雜度是o(n^2)。
kruskal演算法,用於求最小生成樹(minimal spanning tree,mst)。是一種貪心演算法,首先將所有邊按權值從小到大排序,每次盡可能將權值小且不構成環的邊加入,逐漸把整個森林合併為一棵樹。(使用了並查集,若兩個端點沒有共同祖先,說明加入該邊不會構成環)
poj 3636 nested dolls:和1065基本一樣的題目,排序時候有所差別。第乙個引數都是從小到大排。因為1065題目要求是包含=的 所以第2個引數也是從小到大排。3636不包含= 所以要從大到小排。w公升序,h降序可以保證w相等時候,一定不會出現覆蓋的情形。用o(n^2)的方法就可以過,不過時間蠻久……
poj 2709 painter:貪心。題目相當詭異。關鍵是怎麼配灰色。我的方法蠻sb。先計算滿足前面不同顏色最少要多少。用剩下的最少的和最多的兩種來配,每次1ml,灰色--。然後排序再配,不足三種就各加50ml。計數器++。直到灰色為0。沒法說明為什麼這樣最優……覺得自己的理論基礎太不牢靠了。
poj 1504 adding reversed numbers:好囧的題目……枉費我還高精度啥啥的……實際上那個數就是int型。只是轉置一下。注意轉置時候對0的處理。
poj 2395 out of hay:嗯,把以前的mst模板拿過來改了改,然後就ac掉了……在求mst的時候記錄權值最大的邊,最後輸出該邊就好。
poj 1125 stockbroker grapevine:求乙個源點,使其到所有其他結點的距離最小。先用floyd-warshall得到每對結點間的最短路徑,對陣列求每行的最大值,再求這些最大值中的最小值。
poj 1251 jungle roads:又是mst……又是把原來的改一改,真的沒什麼好說的。輸入的是字母而不是數字,有點討厭。記錄最小生成樹的總權值然後輸出。
poj 2240 arbitrage:又囧了,迴圈控制出錯導致陣列越界,結果我還很sb的一直改陣列大小,re了無數次……然後沒有初始化陣列,又wa……本題是floyd的變形。判斷是否有邊的權值乘積大於一的環。陣列初始化為0,d[i][j] = w[i][j],三重迴圈判斷d[i][j] = d[i][j]<
d[i][k]*d[k][j]?d[i][k]*d[k][j]:d[i][j]。最後檢視是否存在d[i][j]>1。
poj 3062 celebrity jeopardy:我只能說這題太強大了……那個0k 0ms 28b的大哥更是神啊。難道他彙編?
這周比較廢,都沒怎麼學習……
一周學習總結 20184 8
這周總的來說還算比較充實,每天都有按計畫的學習知識,這一星期把web高階看完了 也實現了具體 其中遇到了很多問題,邏輯難度來說還可以接受,仔細想想可以想明白。除此之外遇到好多非 邏輯方面的問題,而是比較基本的eclipse環境問題,以下列出一些我敲 時遇到的問題 1.比較常見的就是專案中沒檢查出來什...
第一周學習總結
第一周,我們有學習,計算機的發展,起源,計算機的各種進化,還有計算機的概念,計算機的語言,計算機的組成這些等等。讓我深刻的意識到這是很龐大的一門課程,同時也對我們接下來要學習的課程充滿了期待。對於我自己來說,第一周的學習我還是覺得挺不錯的,挺開心的,能認識到這麼多的朋友,這麼多的知識,讓我對計算機有...
第一周學習總結
第一周總結 今天 2018.11.22 我們班開了一次班會,這次班會主要是由我主持的,在班會上,我先交代了最近班級需要注意的問題和需要完成的工作,在會議的最後我還著重強調了班級班風的建設問題。身為我們班的團支書,我感覺我身上擔負的責任很重,我也在盡心盡力的為班級建設做貢獻。最重要的,這些責任更是對我...