原创 C++ Primer學習總結 第13章 拷貝控制

第13章 拷貝控制 1.    什麼是拷貝構造函數? P440 如果一個類的構造函數的第一個參數是自己類類型的引用, 且所有其他參數都有默認值, 那麼這就是一個拷貝構造函數.   2.    拷貝初始化和直接初始化.  P441 如果

原创 HDU 1262 尋找素數對(素數)

HDU 1262 尋找素數對(素數) http://acm.hdu.edu.cn/showproblem.php?pid=1262 題意:        哥德巴赫猜想大家都知道一點吧.我們現在不是想證明這個結論,而是想在程序語言內部能夠表

原创 線段樹

線段樹注意:線段樹維護的元素 與線段樹的節點不一樣。線段樹整體維護的是從1到n下標的元素(當然也可以維護0到n-1號元素或者其他任意一個區間的元素)但是擁有1到大約3*n的樹節點,每個樹節點維護一段[L,R]的區間內所有的元素信息(沒有0

原创 2-SAT問題

2-SAT問題         現有一個由N個布爾值組成的序列A,給出一些限制關係,比如A[x]AND A[y]=0、A[x] OR A[y] OR A[z]=1等,要確定A[0..N-1]的值,使得其滿足所有限制關係。這個稱爲SAT問

原创 Bellman_Ford算法

Bellman_Ford算法          Bellman_Ford算法也是求單源最短路徑的算法,但是它能算帶負權邊的圖的最短路徑(對於帶負圈的圖就無能爲力),且可以判斷當前圖是否帶有負圈。它的時間複雜度是O(n*m),其中n爲點數,

原创 二分圖判定

二分圖判定        二分圖又稱作二部圖,是圖論中的一種特殊模型。 設G=(V,E)是一個無向圖,如果頂點V可分割爲兩個互不相交的子集(A,B),並且圖中的每條邊(i,j)所關聯的兩個頂點i和j分別屬於這兩個不同的頂點集(i in A

原创 網絡流

網絡流          網絡流問題的詳細介紹可以看劉汝佳<<入門經典>>和<<訓練指南>>相關部分。注意:下面的網絡流模板裏面考慮的都是有向圖,如果要處理無向圖,那麼對於無向圖的每條邊,你需要再圖上添加兩個方向的邊各一條且流量費用相同。

原创 並查集

並查集         並查集是一種數據結構,一般它處理的是圖(其實是解決無向圖的)的連通分量問題,但是當並查集的根節點可以維護更多的信息時,並查集可以解決範圍更廣的基於無向圖連通分量的問題。做了這麼多並查集的題目後,我感覺並查集就是解決

原创 最小生成樹

最小生成樹         一個有 n 個結點的連通圖的最小生成樹是原圖的極小連通子圖,且包含原圖中的所有 n 個結點,並且有保持圖連通的權值總和最小的邊。 劉汝佳<<訓練指南>>P343詳細介紹了最小生成樹相關的知識。        

原创 有向圖的強連通分量

有向圖的強連通分量         有向圖強連通分量在有向圖G中,如果兩個頂點vi,vj間(vi>vj)有一條從vi到vj的有向路徑,同時還有一條從vj到vi的有向路徑,則稱兩個頂點強連通(strongly connected)。如果有向

原创 Dijkstra單源最短路徑

Dijkstra單源最短路徑         給定一個帶權有向圖G=(V,E) ,其中每條邊的權是一個非負實數。另外,還給定 V 中的一個頂點,稱爲源。現在我們要計算從源到所有其他各頂點的最短路徑長度。這裏的長度是指路上各邊權之和。這個問

原创 Floyd算法

Floyd算法         Floyd算法又稱爲插點法,是一種用於尋找給定的加權圖中多源點之間最短路徑的算法。該算法名稱以創始人之一、1978年圖靈獎獲得者、斯坦福大學計算機科學系教授羅伯特·弗洛伊德命名。         注意:由下

原创 二分圖匹配

二分圖匹配        給定一個二分圖G(無向圖),在G的一個子圖M中,M的邊集中的任意兩條邊都不依附於同一個頂點,則稱M是一個匹配.        選擇這樣的邊數最大的子集稱爲圖的最大匹配問題(maximal matchingpro

原创 BFS學習總結

BFS學習總結          給你一個n*m的網格迷宮,迷宮中有些格子不能走,其他的格子都能走。然後給你起點與終點,問你從起點走到終點最少需要多少步?          上面的問題就是一個典型的BFS問題,對於這類問題來說,只要你掌握

原创 無向圖求割頂與橋

無向圖求割頂與橋         對於無向圖G,如果刪除某個點u後,連通分量數目增加,稱u爲圖的關節點或割頂。對於連通圖,割頂就是刪除之後使圖不再連通的點。如果刪除邊(u,v)一條邊,就可以讓連通圖變成不連通的,那麼邊(u,v)是橋。