ACM演算法blog與模板合集(逐步完善中)

2021-09-25 06:08:16 字數 1729 閱讀 1072

lca是用來求最近公共祖先的演算法

樹鏈剖分可以快速求出樹上兩點之間的資訊

可以統計各個結點為根的子樹的資訊

統計所有邊的資訊

題集:poj1741

洛谷3806

bzoj2152

洛谷4149

洛谷2664

帶權並查集處理的是多個關係存在時是否有關係存在矛盾的問題

(在模p的情況下,原根rt可以用來表示(1~p-1)的數——

例如5的原根為2

1=2^4%5;

2=2^1%5;

3=2^3%5;

4=2^2%5;

(由於原根一般不大,可以暴力求解:從2開始列舉,然後暴力判斷g^φ( p ) = 1 (mod p)是否當且當階為φ( p )的時候成立

bool check(int g) 

return true;

}void get()

}

單純形法解決的是線性規劃的問題

*這裡是蔡隊的板子,用這個板子需要注意的是a [m] 陣列放置的是目標函式的係數,並且a[m] [n] 放置的是目標函式的值(a[i][n]放置的都是標準式右邊的值)

這個板子也不需要填入鬆弛後產生的xi的係數

const int maxm = 500; // 約束數目上限

const int maxn = 500; // 變數數目上限

const double inf = 1e100;

const double eps = 1e-10;

double x[maxm];

struct ******x

}bool feasible()

pivot(r, c);}}

// 解有界返回1,無解返回0,無界返回-1。b[i]為x[i]的值,ret為目標函式的值

int ******x(int n, int m, double x[maxn], double& ret)

p = inf;

for (int i = 0; i < m; i++)

if (a[i][c] > eps)

if (p == inf) return -1;

pivot(r, c);}}

};

那麼,如何求目標函式的最小值呢

假如z=x1+x2,求z的最小值

那麼我們只需要兩邊乘-1得到-z=-x1-x2

另z1=-z,然後求z1的最大值即可

高斯消元可以解方程組

(異或高斯消元模板

#includeusing namespace std;

#define max_size 350

#define ll long long

ll matrix[max_size][max_size];

ll free_x[max_size]; //自由變元

ll x_ans[max_size]; //解集

ll free_num=0; //自由變元數

ll guass(ll row,ll column) //係數矩陣的行和列

if(max_r!=row) //交換

for(ll i=col;i=0;i--)

}}

三維cdq分治例題//題解

bzoj

kuangbin

poj

ACM模板合集

第一年小白拿銅牌,第二年隊友出走,加上疫情原因不能回校訓練導致心底防線徹底崩盤,於是選擇退役。自從退役之後,一直想我打了那麼久的acm,什麼也沒留下覺得很難受,突然想到我打acm的時候,模板的程度參差不一,有的時候錯誤的模板真的會影響結果,所以我想整理完我的和我的隊友的模板留給未來的小夥伴們,希望你...

ACM基本演算法合集(持續 )

寫在前面 迷茫了近乙個月最後還是決定搞acm 大佬們請帶帶我,我真的是乙隻單純的蒟蒻 最近看了好多dalao博主的部落格感覺對於每一階段的學習總結以及題目記錄還是挺有必要的,所以廢話不多說,直入主題 這篇部落格可能會發展成乙個目錄吧 然後以後每總結乙個東西就會更新這篇部落格一下下 大佬們請不吝賜教 ...

演算法模板 並合集

題目描述 一共有n個數,編號是1 n,最開始每個數各自在乙個集合中。現在要進行m個操作,操作共有兩種 m a b 將編號為a和b的兩個數所在的集合合併,如果兩個數已經在同乙個集合中,則忽略這個操作 q a b 詢問編號為a和b的兩個數是否在同乙個集合中 include using namespace...