原创 LC.32. 最長有效括號

LC.32. 最長有效括號 傳送門 挺好的一個題,這裏主要再分析一下官方的解法。 思路: 1.dpdpdp。 令以下標iii結尾的字符串的最大長度爲dp[i]dp[i]dp[i],顯然s[i]=′(′s[i]='('s[i]=′(

原创 P1121 環狀最大兩段子段和

P1121 環狀最大兩段子段和 傳送門 思路:dp+dp+dp+維護前後綴最值。 當兩端非跨環時,直接掃一遍premx[i]+sufmx[i+1],i∈[1,n)pre_{mx}[i]+suf_{mx}[i+1],i\in[1,n

原创 P2290 [HNOI2004]樹的計數

P2290 [HNOI2004]樹的計數 傳送門 思路:prufer序列prufer序列prufer序列板子題。 顯然有公式:(n−2)!∑i=1n(degree[i]−1)!\dfrac{(n-2)!}{\sum\limits_

原创 P1430 序列取數(區間DP)

P1430 序列取數(區間DP) 傳送門 思路:區間dpdpdp。想了好半天+看題解才搞明白,這裏再梳理一遍。 顯然當AAA的取值和最大時,因爲sumA+sumB=sum_A+sum_B=sumA​+sumB​=常數,所以sumA

原创 P5390 [Cnoi2019]數學作業(位運算&組合數學)

P5390 [Cnoi2019]數學作業(位運算&組合數學) 傳送門 題意:求給定集合所有子集元素異或和的求和。 ans=∑si⊂Sxor ai,ai∈sians=\sum\limits_{s_i\subset S}xor\ a_

原创 P3907 圈的異或(DFS&前綴和)

P3907 圈的異或(DFS&前綴和) 傳送門 思路:dfs+dfs+dfs+前綴和。 用一個數組vis[]vis[]vis[]標記結點是否訪問過,若uuu的子結點vvv已經被訪問過且不是父親說明形成了一個環,我們還需要用一個pr

原创 LC.108. 將有序數組轉換爲二叉搜索樹

LC.108. 將有序數組轉換爲二叉搜索樹 傳送門 前置知識: 1.二叉搜索樹的中序遍歷是升序的。 2.給定中序遍歷不能確定一棵二叉搜索樹。 3.高度平衡BSTBSTBST的含義:一個高度平衡二叉樹是指一個二叉樹每個節點 的左右

原创 P3048 [USACO12FEB]Cow IDs

P3048 [USACO12FEB]Cow IDs 傳送門 思路:遞歸&組合數學。 顯然對於長度爲lenlenlen的010101串,包含kkk個1且第一位爲111的個數爲從len−1len-1len−1中選出k−1k-1k−1個

原创 P3917 異或序列(位運算)

P3917 異或序列(位運算) 傳送門 題意:給定序列求所有區間異或和的和。 思路:經典異或題,顯然需要按照位來計算貢獻。我們需要先預處理前綴異或和,這樣便於計算區間。對於當前位iii,我們只需看這個區間的異或和的該位是否爲1,也

原创 LC.378. 有序矩陣中第K小的元

LC.378. 有序矩陣中第K小的元素 傳送門 思路: 1.對所有元素排序,時間複雜度:O(n2logn2)O(n^2logn^2)O(n2logn2) class Solution { public: int kthSm

原创 P3909 異或之積(後綴和)

P3909 異或之積(後綴和) 傳送門 思路:後綴和的巧妙應用。 原式 =6×∑i=1nai∑j=i+1naj∑k=j+1nak=6\times\sum\limits_{i=1}^n a_i\sum\limits_{j=i+1}^

原创 LC.718. 最長重複子數組

LC.718. 最長重複子數組 傳送門 思路1:dpdpdp,因爲數據很小都只有100010001000,很顯然類比LCSLCSLCS可以令dp[i][j]dp[i][j]dp[i][j]以 a[i],b[j]a[i],b[j]a

原创 Light OJ 1094 - Farthest Nodes in a Tree

Light OJ 1094 - Farthest Nodes in a Tree 傳送門 思路:樹的直徑。 方法1:兩次bfsbfsbfs,第一次找到直徑的一個端點,然後再從該端點bfsbfsbfs一次的最大距離即爲直徑,bfs

原创 hdu.6184 Counting Stars(三元環)

hdu.6184 Counting Stars(三元環) 思路:顯然這樣結構的圖像可以轉化爲三元環來做。 我們用一個數組visvisvis來維護每條邊是否在三元環裏。 我們可以通過枚舉每條邊是三元環的邊的次數來計算出該邊對答案的

原创 Drainage Ditches(最大流)

Drainage Ditches(最大流) 傳送門 思路:最大流的裸題,此題數據較小,用Edmonds−KarpEdmonds-KarpEdmonds−Karp算法較方便。 第一次寫記錄一下算法的實現: 增廣路徑:從源點(類似起