先貼一張圖
(來自 啊哈磊的專欄)
最短路(1)floyd
for(int k = 1; k <= n; k++)
for(int i = 1; i
<= n; i++)
for(int j = 1; j
<= n; j++)
a[i]
[j] = a[i]
[k] + a[k]
[j];
(2)堆優化 dijkstra
用 priority_queue 做堆,對於每次彈出的點
標記訪問
對於所有能訪問到的點
鬆弛若未訪問,壓入堆中
(3)spfa
用 queue 做佇列,對於每次彈出的點
消除標記
對於所有能訪問的點
鬆弛若未標記,則標記,進入佇列
最小生成樹
(1)kruskal
並查集初始化
邊權排序
如果邊上兩點不在同一集合內
合併兩點
將邊加入最小生成樹
(2)prim
//定義集合 a b
任選 a 中乙個節點,並加入 b
刪除該節點
選乙個在所有連線 a 和 b 權值最小的邊
將兩個節點連線
邊數++
將 a 中節點刪除並加入到 b 中.
若邊數為n-1
完成最小生成樹
否則 繼續選擇
強連通分量
tarjan
對於 dfs 每次到的節點
初始化 dfn[x] = low[x] = ++dfs_clock
把節點壓入棧中
對於所有能訪問到的節點
如果 dfn 為 0(未dfs到)
dfs 該節點
更新 low[x] = min(low[x], low[該節點])
若不為 0 且 不在棧中
low[x] = min(low[x], dfn[該節點])
如果 low[x] == dfn[x]
彈出棧中元素,直到彈出的元素等於x
則彈出的元素屬於乙個強連通分量
一言不合就sort數學&數論 知識總結
【本人很懶】深搜
void dfs(/*當前狀態*/)
for(int i = a; i <= b; i++)
/*恢復當前狀態*/
}return ;
}//by zrt
優化:廣搜最優化剪枝
可行性剪枝
記憶化搜尋
改變搜尋順序
優化搜尋策略
void bfs()
}q.pop();
}return ;
}
優化:倒推判重:hash、二叉搜尋樹
雙向廣搜
啟發式搜尋
二分 改寫成a*
f[n] = 初值
for(k = n+1; k >= 1; k--)//階段
for(i; ; )//狀態
for(j; ; )//決策
f[k] = opt
print f[1]
順推f[1] = 初值
for(k = 2; k <= n; k++)//階段
for(i; ; )//狀態
for(j; ; )//決策
f[k] = opt
print f[n]
二分法
二叉樹 & 二叉搜尋樹
並查集線段樹 & 樹狀陣列字串演算法總結
kmp概率與期望manacher
最小表示法
. .
.
並不全是noip考點
1、網路流
2、計算幾何
3、fft
4、lca
5、2-sat
6、單純形法
7、ac自動機..
.未完待續 參考
遠航之曲
川漢唐啊哈磊
NOIP考點總結
一發noip考點的總結。noip考綱總結 noip考前經驗談 首先來一張圖,很直觀 截止到2012年資料 下面是收集的一些,我改了一下 紅色加粗表示特別重要,必須掌握 綠色加粗表示最好掌握,可能性不是很大,但是某些可以提高程式效率 高精度 a.加法 b.減法 c.乘法 應該只會有高精乘單精 d.高精...
noip模擬總結
先講講今天的比賽,t1 看著很水,在草稿紙上畫了一下,發現其實並不簡單,於是先去打第二題,最後半個小時實在是一點頭緒也沒有,打了個狀壓dp 70分 暴力分真多 t2 把樣例畫出來模擬一下就想到了,套路題,就是暴力有點難打,自信不對拍 還好沒掛 t3 又是乙個套路題,可惡的博弈,坑了我半天,最後還是想...
noip模擬總結
先講講今天的比賽,t1 看著很水,在草稿紙上畫了一下,發現其實並不簡單,於是先去打第二題,最後半個小時實在是一點頭緒也沒有,打了個狀壓dp 70分 暴力分真多 t2 把樣例畫出來模擬一下就想到了,套路題,就是暴力有點難打,自信不對拍 還好沒掛 t3 又是乙個套路題,可惡的博弈,坑了我半天,最後還是想...