原创 Treap模板

Treap 可持久化,多種區間操作 merge操作 int merge(int a, int b) { if(!a || !b) return a+b; if(rnd(b)>=rnd(a)){

原创 主席樹模板

主席樹模板 主要用來查詢區間第k小 insert操作 int insert(int o, int x) { int now=++len,root,l=1,r=m,mid; root=now; s(now)=s

原创 [SDOI2017]序列計數

DescriptionAlice想要得到一個長度爲n的序列,序列中的數都是不超過m的正整數,而且這n個數的和是p的倍數。Alice還希望,這n個數中,至少有一個數是質數。Alice想知道,有多少個序列滿足她的要求。Input一行三個數,n

原创 BZOJ5059 前鬼後鬼的守護

前鬼後鬼的守護 給一個長度爲n的正整數序列a,每次你可以花|ai-a′i|的代價把 ai修改成a′i,要求用最小的代價把數列修改成單調非降的(即 ai≤ai+1)。n≤5*10^5;ai≤10^9。 #include <iostrea

原创 莫比烏茲反演, 歐拉函數等亂七八糟的數論公式推導題

前言 最近學了些數論函數,有了一些小小小小的套路經驗 強烈推薦以下幾個博客 數論函數變換總結 金策大佬 超詳細 課件 狄利克雷卷積 定義:(f×g)(n)=∑d|nf(d)g(nd)(f×g)(n)=∑d|nf(d)g(nd)

原创 Cogs_蝗災

蝗災 單點修改,矩陣求和 n≤105n≤105 CDQ分治 #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #define Fil

原创 APIO2014 Beads ans wires[樹形DP]

[APIO2014] Beads and wires Question: 有一個點,可以通過兩種方式添加節點 Append(w,v)Append(w,v) :一個新的珠子 ww 和一個已經添加的珠子 vv 用紅線連接起來。 In

原创 APIO2016 Gap [交互題]

[APIO2016] Gap Question 題意比較簡單,讓你在有限次查詢中,找到一個嚴格遞增的非負整數數列中的最大差值(ai+1−aiai+1−ai ) 0≤a1<a2<...<an≤10180≤a1<a2<...<an≤10

原创 SDOI2014 數表

SDOI2014 數表 有一張 n×m 的數表,其第 i 行第 j 列(1≤≤ i≤≤ N,1≤≤ j≤≤ m, 1 ≤≤ i ≤≤ N, 1 ≤≤ j ≤≤ m,1≤≤ i≤≤ N,1≤≤ j≤≤ m)的數值爲能同時整除 i 和

原创 Suffix Array Poj 1743

Musical Theme Question 求字符串中不重疊重複出現的最長子串長度 #include <iostream> #include <cstdio> #include <cstring> #include <algori

原创 [POI2008]PER-Permutation 非質數取模

PER-Permutation Question 求一個有重複元素的排列的字典序 Solution 類似於康託展開 從後往前算出比每一位小的排列的個數 累加起來便是字典序,只不過這裏的個數要考慮到重複元素 這裏主要講取模(因爲這

原创 [wc2011]Xor

Xor 給定一個n(n≤50000) 個點m(m≤10000) 條邊的無向圖,每條邊上有一個權值。請你求一條從1到n的路徑,使得路徑上的邊的異或和最大。 線性基 任意選一條道路,作爲初始答案 對所有環求異或和 對

原创 LCT (Link-Cut-Tree) 學習筆記

LCT 解決動態樹問題的一種數據結構 推薦 PoPoQQQ 的詳解 鏈上求和 鏈上求最值 鏈上修改 斷開樹上一條邊 * 連接兩個點 * 概念 重兒子(暫時這樣命名): 一個節點最多只能有一個重兒子 重邊

原创 土地購買

有nn 塊土地需要購買,每塊土地都是矩形的,有特定的長與寬。你可以一次性購買一組土地,價格是這組土地中長的最大值乘以寬的最大值。比方說一塊5×3的土地和一塊9×2的土地在一起購買的價格就是9×3。顯然,怎樣分組購買土地是一門學問,你的任務

原创 壽司餐廳

壽司餐廳 一個數列,每個點都有代號,任意區間都有獲利 d[i][j],重複區間算一次,如:選定[1,3],則獲利d[1][1], d[2][2], d[3][3], d[1][2], d[2][3], d[1][3]。設代號爲x,出現次數