原创 樹狀數組與前綴和差分數組以及二維樹狀數組

樹狀數組與前綴和差分數組以及二維樹狀數組樹狀數組基本思想樹狀數組實現初始化差分數組與前綴和數組成段修改單點查詢成段修改成段查詢二維樹狀數組單點修改成段求和成段修改單點查詢成段修改成段求和樹狀數組的其他應用逆序對二維平面排序 樹狀數

原创 狄利克雷卷積與莫比烏斯函數

狄利克雷卷積與莫比烏斯函數數論函數與積性函數狄利克雷卷積莫比烏斯函數相關性質基礎問題與公式 若想使用莫比烏斯反演,熟練掌握狄利克雷卷積包括定義、記號以及相關的性質、證明等是非常有好處的。 數論函數與積性函數 數論函數也稱作算術函數

原创 POJ3667線段樹區間合併

POJ3667Hotel要求支持兩種操作:成段分配與成段回收。 關於線段樹的更詳細實現請參考線段樹解決區間問題包括延遲操作以及離散化。 /* 1 a:找一段空間有連續a個空,分配出去 2 a b: 從a開始的b個位置回

原创 莫比烏斯反演入門題目

莫比烏斯反演入門題目整除分塊[洛谷P2568: GCD](https://www.luogu.org/problem/P2568)[SPOJ VLATTICE](https://www.spoj.com/problems/VLAT

原创 POJ2528線段樹區間合併加離散化

POJ2528Mayor’s posters就只支持一種操作,一次性的給一段區間塗上顏色,且每次顏色均不一樣。問最後一共可以看到多少種顏色。 關於線段樹的更詳細實現請參考線段樹解決區間問題包括延遲操作以及離散化 /* 在數

原创 hdu4578線段樹多種延遲標記

hdu4578Transformation,要求支持3種修改操作與3種查詢操作。 關於線段樹的更詳細實現請參考線段樹解決區間問題包括延遲操作以及離散化。 /* 數組A[1...N],一共有4種操作 1 x y c:

原创 線段樹解決區間問題包括延遲操作以及離散化

線段樹解決區間問題包括延遲操作以及離散化線段樹簡介與分治策略線段樹簡介分治策略線段樹不能解決的問題線段樹的基本操作線段樹的簡單示例線段樹的基礎代碼實現輔助操作建樹查詢修改延遲操作延遲操作思想延遲操作代碼實現多種延遲標記聯合處理區間

原创 字典樹

字典樹又稱爲Trie Tree。Trie來自於單詞retrieval。字典樹是一種存儲、統計和查找大量字符串的數據結構。如下圖顯示了一個字典樹,其中保存了5個單詞:how、howl、what、where和when。 字典樹顯然

原创 AC自動機

在字典樹中加入失配鏈(也可以叫做失敗指針)就可以構成AC自動機,可以用來解決多模式匹配的問題。給定多個模式串P0、P1、……,給定目標串T,問T中包含了哪些P……等等問題。 在AC自動機中,每一個節點都有一個失敗指針指向自動機中

原创 後綴數組

給定一個長度爲N的字符串S,令Si爲從第i個位置開始的S的後綴,i稱爲後綴Si的序號,i取值範圍從0到N-1。顯然S有N個後綴。將這N個後綴按字典序升序排列,並用一個數組記錄其後綴序號,則該數組稱爲後綴數組。 令S=adbc,則S

原创 快速傅里葉變換FFT的迭代實現

    《快速傅里葉變換的相關定義、原理及其遞歸算法》描述了FFT的最基本原理,按2來分解原DFT運算。實際上有效率更高的分解辦法(視卷積雙方的長度而定),當然效率雖更高卻更難以理解。即使按2來分解,也有基於時域的和基於頻域的區別,上文描

原创 快速傅里葉變換的相關定義、原理及其遞歸算法

    快速傅里葉變換FFT是離散傅里葉變換DFT的一種快速算法,實際上諸如Matlab等科學計算軟件都已經實現了FFT,只需調用相應的接口即可。在ACM裏,FFT的典型應用就是大數的乘法或者多項式的乘法。順便,如果題目規模不是很大,有關

原创 字符串的最小表示

長度爲n的字符串s,其字母序列表示爲[0,1,2,…,n-1]。將其循環左移一位變爲[1,2,…,n-1,0],記作s(1)。則s(k+1)爲s(k)循環左移一位得到。s(0)就是s。一共可以得到n個字符串的集合,{s(0),s(

原创 簡單多邊形與圓相交求面積

簡單多邊形與圓相交求面積簡單多邊形的有向面積簡單多邊形與圓相交的有向面積圓心三角形與圓相交求面積簡單多邊形與圓相交的有向面積 簡單多邊形的有向面積 所謂簡單多邊形,就是指不相鄰的邊不相交,且每個頂點只跟2條邊相鄰。一般而言,除非題

原创 SPOJ694 && SPOJ705 ——不同子串的總數

題意:給定字符串S,求S的不同子串的總數量。 求出SA數組與Height數組,每個子串必然是某個後綴的前綴。令S的長度爲N,則後綴SA[i]可以貢獻出N-SA[i]個前綴。但其中有Height[i]個與之前的是重複的,因此要減去。