省選 簡單演算法

2022-05-08 12:54:09 字數 906 閱讀 1073

這裡是一些簡單的演算法模板,沒有編譯過.(編譯過的話會做特殊說明)

目錄:1.最近公共祖先

2.cdq分治

1.最近公共祖先

namespace lca

void dfs(int u,int fa)

if(x==y) return x;

for(int i=log-1;i>=0;--i)

if(f[i][x]!=f[i][y])

x=f[i][x],y=f[i][y];

return f[0][x];

}};

2.cdq分治(二維 lis)

//cdq分治 --- 3維lis

namespace cdq

struct nodenode[maxn],arr[maxn];

int cmpx(node a,node b)

int cmpy(node a,node b)

int equal(node a,node b)

struct bit

void update(int p,int x)

}int query(int p)

return ss;

}void del(int p)

}tree;

void solve(int l,int r)

else

}for(int i = tr;i <= r; ++i) getmax(ans[arr[i].id],tree.query(arr[i].z-1) + 1);

for(int i = l;i <= mid; ++i) tree.del(arr[i].z);

sort(arr+mid+1,arr+1+r,cmpx),solve(mid+1,r);

}; };

省選演算法匯集

陣列 鍊錶,雙向鍊錶 佇列,單調佇列,雙端佇列 棧,單調棧 堆並查集與帶權並查集 hash 表 自然溢位 雙hash 樹狀陣列 線段樹,線段樹合併 平衡樹treap 隨機平衡二叉樹 splay 伸展樹 scapegoat tree 替罪羊樹 塊狀陣列,塊狀鍊錶 5.樹套樹 線段樹套線段樹 線段樹套平...

OI省選演算法彙總

簡單列了一點 1.1 基本資料結構 1.陣列 2.鍊錶,雙向鍊錶 3.佇列,單調佇列,雙端佇列 4.棧,單調棧 1.2 中級資料結構 1.堆 2.並查集與帶權並查集 3.hash 表 自然溢位 雙hash 1.3 高階資料結構 1.樹狀陣列 2.線段樹,線段樹合併 3.平衡樹 treap 隨機平衡二...

省選 演算法總結 劃分樹

剛學了劃分樹,徹底蛋疼了。怕忘了,先總結一下 注意 本文中第k大是指從小到大排序後的第k個數,如下表 原陣列2 1 3 2 3 排序後1 2 2 3 3 k 1k 2 k 3k 4 k 5 所以可能會出現重疊的情況 類似歸併排序,把區間每次均分,選乙個基準,小於該基準的到左子樹,大於的到右子樹,然後...