這次比賽考得一般般,這回的題是前段時間學的圖論演算法的測試題:100+52.2+40+12.5。
【1】位圖:
這題是很簡單的圖論,用bfs
加優化簡單
o(nm)
過了。
正解:這題將所有更新的點記錄在乙個佇列裡(初始的時候都是1
的看為更新的),然後每次將這些點往四周擴散,如果可以擴散,那麼
ans[x,y]:=min(ans[x,y],ans[i,j]+1)
,再將可以更新的點再記錄在乙個新的佇列裡,再做擴散,同上面一樣,直至不可更新那麼答案就出來了(僅供參考,不喜勿噴)。
【2】外星人入侵:
這題在考試的時候用記憶體肯定爆的方法用spfa
做,拿了
52.2
分(但是答案錯誤了),雖然不知道**錯了,後來在同學的講解後用記憶體優化的方法
spfa
做對了。
正解:這題用在課上講過的方法來優化記憶體,用next[i]
來儲存第i
個邊同屬
a[i,1]
這個起點的上一條邊j,用
last[i]
來儲存a[i,1]
這個起點的最後一條邊,然後再
next
。由於最多
m*2(1<=m<=100000)
條邊(因為每條邊要複製另乙個方向的邊),所以用上面的方法來優化
spfa
的記憶體就可以了。
【3】無線通訊網:
這題剛看的時候就發現這是乙個加了最後的貪心的最小生成樹,果斷用kruskal
演算法,不過由於
geifather
偷了個懶,並且後面的貪心也錯了,所以自信滿滿的只對了兩個點(這題資料水,才五個點)。
正解:用kruskal
演算法,將所有邊排序並計算答案(詳細看
psacal
書上)。不過這裡要注意的是,最後的答案只用計算到第
n-1-s
個點就可以結束了,然後輸出列舉的
sum[k]
(這是因為只有
s個衛星**)。
【4】砍樹:
這題考試的時候不太懂,於是水了乙個樣例和『none
』,結果水的樣例對了乙個點,出奇地拿了乙個
12.5分。
正解:這題用遞迴來進行一次全部的遍歷,算出其的子節點個數,統一從1
開始,所以樣例的節點個數如下:
i 1 2 3 4 5 6 7 8 9 10
f 10 9 8 3 1 1 2 5 2 1
所以答案看下面的布林表示式成不成立,如果可以的話就輸出吧。
(n-f[k]<=n div 2)and(n-f[i]<=n div 2)and(n-f[i]<=n div 2)......
k為當前節點序號,
i為與其連通的所有沒有走過的點的列舉,注意,
f[i]
在下乙個遞迴返回了值再判斷。
這次比賽考驗了我對這兩天學的圖論演算法的了解和實現,我也通過這次考試更加堅實了我對圖論演算法的理解,但仍還要多多消化,加油!
2015 8 15比賽總結
在總結之前,我必須膜拜一下某個切完提高組來省賽組虐場的犇。今天的比賽,失策還是有的,今天的問題如下 打 不小心,打錯了乙個小細節,導致最終答案錯誤。有的題目a了樣例我就以為可以了,或者是打的對拍也錯了 打題前沒有想清楚,最後對拍時才發現錯誤。第一題 這是道二分的題目,我在做比賽時就想到了正解,就是用...
8 18 比賽總結
這次比賽很不錯,排名第一 100 100 0 100 300。1 跳格仔 這題在比賽的時候做就很淼,直接dp 就可以了。正解 dp。2 2048 這題是一道純模擬題,只需要模擬2048 執行的步驟來進行迴圈和合併,由於 比較複雜,所以要精細做,考試的時候在除錯一小時後終於將這道題做了出來。正解 同上...
比賽2 總結
t2t3 t4t5總結 給定乙個整數序列a1,a2 判斷是否能將其分為奇數段 每段不為空0 每段具有奇數長度且開始和結束為奇數。includeusing namespace std int main cout yes 輸入整數序列a1,a2 點座標為 i,a i 是否有可能畫出兩條平行且非重疊的線,...