原创 PTA L2-004 這是二叉搜索樹嗎?——根據前序序列判斷是否爲二叉搜索樹

這個題有一個非常詭異的地方。在一般的根據樹結構判斷是否爲二叉樹的問題中,這種情況: 是一定要特別注意的,如果用普通的dfs判斷左、右子樹是否小於、大於根節點,會把這顆樹誤判爲二叉搜索樹。 然而,如果僅給出一棵樹的前序序列,讓你判

原创 歐拉函數及部分性質

歐拉函數:對於一個正整數n,小於n且和n互質的正整數(包括1)的個數,記作φ(n) 。 通式:φ(x)=x*(1-1/p1)(1-1/p2)(1-1/p3)*(1-1/p4)……(1-1/pn),其中p1, p2……pn爲x的所有

原创 求區間第k大之——歸併樹(poj2104)

歸併樹與線段樹的區別是,線段樹的結點維護一個值,而歸併樹的結點維護一個有序數組。每個節點的數列是其兩個兒子節點的數列合併後的結果。這顆線段樹正是歸併排序的完整再現。 要計算在某個區間上不大於x的數的個數,只需: 如果所給區間與當

原创 網絡流之最大流,Ford-Fulkerson方法

過程: f(e):e上已流過的流量 c(e):e上允許流過的最大流量 殘餘網絡:f(e)小於c(e)的邊e && 滿足f(e)>0的e對應的反向邊rev(e)組成的網絡 增廣路:殘餘網絡上的s–>t路徑 求解最大流:就是不斷找圖中

原创 java表達式類型轉換

long ans2=0; //ans2=(long)10*Integer.MAX_VALUE; //ans2+=(long)10*Integer.MAX_VALUE; ans2=(long)(ans2+10*Int

原创 匹配、邊覆蓋、獨立集和頂點覆蓋

記圖G=(V,E). 匹配:在G中兩兩之間沒有公共端點的邊集合 邊覆蓋:G中的任意端點都至少是邊集F中的某條邊的端點的邊集合F⊆E 獨立集:在G中兩兩之間互不相連的點集合 頂點覆蓋:G中的任意邊的至少一個端點屬於S的頂點集合S⊆V

原创 SPFA與dijkstra+heap的比較

https://www.cnblogs.com/flipped/p/6830073.html 簡而言之就是如果是稠密圖,Dijkstra+heap比SPFA快。稀疏圖則SPFA更快。 (cnblog真好看啊,csdn你…不想吐槽了

原创 LCS及其應用(最長公共子序列)

dp[i][j]dp[i][j]dp[i][j]表示 aaa串的前iii個與b串的前jjj個的最長公共子序列的長度。則: dp[i][j]={max(dp[i−1][j],dp[i][j−1])a[i]!=b[i]dp[i−1][

原创 匈牙利算法(DFS、BFS實現)

求解最大匹配問題的一個算法是匈牙利算法。 交替路:從一個未匹配點出發,依次經過非匹配邊、匹配邊、非匹配邊…形成的路徑叫交替路。 增廣路:從一個未匹配點出發,走交替路,如果途徑另一個未匹配點(出發的點不算),則這條交替路稱爲增廣路

原创 歸併排序(遞歸實現)

只是補個欠賬… 注意: 樹形結構切分到回覆,時間複雜度一般爲O(nlogn) 遞歸的歸併排序,最大時間複雜度=平均時間複雜度=O(nlogn) 遞歸的歸併排序是按照深度優先在樹上進行的。 僞碼描述: MERGE_SORT(A

原创 快速排序(遞歸實現)

1.哨兵位置爲最終位置 2.partition就是切分過程 3.選擇一個哨兵,將一組數劃分爲全比它小、全比它大的左右兩部分,再分別對這兩部分繼續如此左右劃分,直到元素個數爲1.整個劃分結束時,數組已排好序。 4.至於parti

原创 數位dp(洛谷2657)

步驟: 1.init()預處理出dp數組.dp[i][j]表示數位長度爲i的最高爲j的數字中的windy數的個數.則dp[i][j]=sum(dp[i-1][k]),0<=k<=9&&abs(k-j)>=2 2.寫出計算[1,x

原创 組合數(逆元)

組合數公式:C(n,m)=n!/((n-m)!*m!)(m≤n) 組合數性質1:C(n,m)= C(n,n-m) 組合數性質2:C(n,m)=C(n-1,m-1)+C(n-1,m) 代碼用組合數公式求C(n,m)%mod.設((n

原创 已知a、b,求其最大公比例(輾轉相減法的擴展應用)

已知a、ba、ba、b的值,且已知其可以表示爲如下形式: a=qk0,b=qk1(q、k0、k1均爲正整數)a=q^{k_0},b=q^{k_1} (q、k_0、k_1均爲正整數)a=qk0​,b=qk1​(q、k0​、k1​均爲

原创 歸併排序(非遞歸實現)

注意 1.在遞歸實現中,向下劃分的過程中並沒有實際操作。實際交換位置等merge操作是從底端向上進行的 2.因此遞歸過程可消除,避免不必要的系統開銷 代碼實現: import java.util.Scanner; pub