原创 拓撲路徑詳細原理

一、拓撲排序概述 一場大型工程,我們往往把它看做多個子工程的集合體,這些小工程有的相互連接,一個是一個的子工程,有的相互並列,共處於一個工程的順序之下,我們可以畫一個圖來表示這個工程和這些子工程的聯繫,它稱爲AOV網。 舉個例子:小S作爲

原创 鏈式前向星基本原理

一、概述 我們在學習圖論的時候學習了一種圖的存儲結構--二維數組鄰接矩陣儲存,他雖然可以表達直觀,快速訪問連接兩點的邊,但是它佔用空間大,只適用於點少的圖,所以我們需要一種能夠可以存儲大型圖的東西--鏈式前向星。            

原创 歸併排序求逆序對

今天是2018.11.9,明天就是NOIP,感覺自己基本數據結構已經差不多掌握了,但是在與學長luo y b對拍板子的時候突然發現逆序對和歸併排序這個盲區,花了1小時差不多補上了。爲了NOIP RP ++ ,特此水一篇,供以後的OIER借

原创 dijkstra堆優化

再求單源最短路徑時,算法有優劣之分,個人認爲在時間方面 樸素dijkstra>bellmanford>SPFA>dijkstra+heap,所以掌握dijkstra堆優化對於OIER是必要的。 本文主要解說迪傑斯特拉堆優化的板子以及它所用

原创 無限讀入的兩種方式

有時候我們會遇到無限讀入的題目,需要按ctrl+z+enter結束輸入,所以掌握無限讀入的方法以應對毒瘤。 scanf() 返回的是已經成功讀入元素的個數。 int n=0; 方法一: while(scanf("%d",&a[++n])

原创 動態規劃的個人感想

半停課狀態的這幾天,在DD Factory老闆和班主任小李的允許下,我猛肝了一波動態規劃,突然有了以下一些思路和感想。 1. 大多題目都可以使用動態規劃來做,只是時間和空間是否允許的問題。   1.1 使用f數組描述狀態,如果描述不清,加

原创 數據離散化詳解

一、概述 數據離散化是一個非常重要的思想。 爲什麼要離散化?當以權值爲下標的時候,有時候值太大,存不下。 所以把要離散化的每一個數組裏面的數映射到另一個值小一點的數組裏面去。 打個比方,某個題目告訴你有10^4個數,每個數大小不超過10^

原创 超詳細STL專題二:map

一、概述 Map是c++的一個標準容器,起到映射作用,在一些程序中建立一個map可以起到事半功倍的效果,查找的複雜度基本是Log(N)。//(好複雜,這什麼垃圾玩意,我就算WA,TLE都不可能用—————————————————————真

原创 分治算法

一、概述 分治算法說白了就是把一個大型問題轉化爲小問題逐個解決。 個人感覺和分治算法含有遞歸的意味。 一般步驟: (1)分解,將要解決的問題劃分成若干規模較小的同類問題; (2)求解,當子問題劃分得足夠小時,用較簡單的方法解決; (3)合

原创 多方法求素數(定義法、埃氏法、歐氏法)

一、概述 素數,又稱質數,一個你小學到現在都十分苦惱的老朋友。 我上小學的時候,老師告訴我說把這個數用已經知道的素數從小到大一點一點試,假如說如果都不能除盡,那它就是個素數。前兩天偶然輔導一個小學生的數學作業,發現幾乎都使用素數表這個東西

原创 哈希概述

一、哈希概述 Hash,一般翻譯做“散列”,也有直接音譯爲“哈希”的,就是把任意長度的輸入(又叫做預映射pre-image)通過散列算法變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小於輸入的空

原创 更新欄

2018.7.27 數據離散化詳解 增加了簡單版本 《https://blog.csdn.net/qq_41754350/article/details/81199993》 2018.8.9 超級簡單並查集詳解 修正了部分代碼 《http

原创 鏈式前向星(數組模擬臨街鏈表儲存)基本原理

一、概述 我們在學習圖論的時候學習了一種圖的存儲結構--二維數組鄰接矩陣儲存,他雖然可以表達直觀,快速訪問連接兩點的邊,但是它佔用空間大,只適用於點少的圖,所以我們需要一種能夠可以存儲大型圖的東西--鏈式前向星。 二、鏈式前向星基本原理

原创 超級簡單並查集詳解

一、概述 並查集,在一些有N個元素的集合應用問題中,我們通常是在開始時讓每個元素構成一個單元素的集合,然後按一定順序將屬於同一組的元素所在的集合合併,其間要反覆查找一個元素在哪個集合中。 其實說白了大部分還是用於尋找兩個點是否聯通,求最小

原创 哈希開鏈法詳解c++

一、概述 這是哈希的一種算法,算是衝突比較少的,但是也難免會有。 這是我們需要探究的問題,開鏈法就是好方法之一。 開鏈法原理比較簡單,代碼比較玄學,大家要在學習的過程之中動手模擬,才能完全掌握它。 int hash(string h)