原创 後綴數組

char s[maxn];//構造字符串s的後綴數組,複雜度爲o(nlogn) int sa[maxn],t[maxn],t2[maxn],c[maxn],n; //每個字符的值必須爲0~m-1 void build_sa(int m){

原创 CF 549G排序,構造

題目鏈接:http://codeforces.com/problemset/problem/549/G 思路:可以將每個人的金錢看作是一個一個的方塊,金錢分可分配金錢和不可分配金錢,不可分配金錢類似臺階。 那麼對於相鄰兩個人的交換,

原创 樹鏈剖分

樹鏈剖分就是把樹上的鏈分成重鏈和輕鏈,然後在重鏈和輕鏈上進行求和、修改,求最大值,最小值等等。。。。 樹鏈剖分只是把找鏈這個環節優化到了log(n),具體的總的複雜度是多少,還要看你儲存鏈的數據結構是什麼。如果用的是線段樹,那麼複雜度大

原创 歐拉函數

* 歐拉函數:求1~n-1中與n互質的數的個數 另外若gcd(i,n) == 1的花gcd(n - i,n) == 1 */ //直接求解歐拉函數,複雜度爲O(sqrt(n)) int euler(int n){ //返回euler(n)

原创 二維樹狀數組

/* 單點修改,查詢的複雜度都爲log(n) * log(n) */ int sum[maxn][maxn]; int n; char c; inline int lowbit(int x) { return x & (-x);

原创 莫隊算法

莫隊算法常用於處理不帶修改的連續區間的詢問問題上,一http://般來說都有以下這種形式: 給你n(1e5左右)個數字A[i],再給你q(1e5左右)個詢問,每個詢問包含一個l和r,表示用某種操作,對原數組的A[l...r]進行操作,並

原创 Miller_Rabin質數測試

//Miller_Rabin的複雜度爲S * log n //注意快速冪中的取模n可能會乘法溢出 bool Miller_Rabin(ll n){//其中n爲要測試的數字 if(n <= 2){ if(n == 2)return t