常用算法模板总结----持续更新
快速排序
void quick_sort(int q[], int l, int r)
{
if (l >= r) return;
int i = l - 1, j = r + 1, x = q[l + r >> 1];
while (i < j)
{
do i ++ ; while (q[i] < x);
do j -- ; while (q[j] > x);
if (i < j) swap(q[i], q[j]);
}
quick_sort(q, l, j), quick_sort(q, j + 1, r);
}
并查集
vector<int> h;
int f(int x){
if(x != h[x]) h[x] = f(h[x]);
return h[x];
}
void u(int x, int y) {
h[f(x)] = f(y);
}
h.resize(n);
for(int i=0;i<n;i++) h[i]=i;
快速幂
a ^ b % p
typedef long long ll;
ll pow(ll a, ll b, ll p)
{
if(b==0) return 1;
ll ans=1;
while(b>0)
{
if(b&1) ans = ans*a%p;
a = a*a%p;
b>>1;
}
return ans;
}