C++ 奇淫技巧(缓更)

C++ 奇淫技巧

scanf("%[^\n]", s); 读取带空格字符串

无向图 头文件 lower_bound 宏定义
并查集
/*
    |合并节点操作|
    |16/11/05ztx, thanks to chaixiaojun|
*/

int father[maxn];   //  储存i的father父节点  

void makeSet() {  
    for (int i = 0; i < maxn; i++)   
        father[i] = i;  
}  

int findRoot(int x) {   //  迭代找根节点
    int root = x; // 根节点  
    while (root != father[root]) { // 寻找根节点  
        root = father[root];  
    }  
    while (x != root) {  
        int tmp = father[x];  
        father[x] = root; // 根节点赋值  
        x = tmp;  
    }  
    return root;  
}  

void Union(int x, int y) {  //  将x所在的集合和y所在的集合整合起来形成一个集合。  
    int a, b;  
    a = findRoot(x);  
    b = findRoot(y);  
    father[a] = b;  // y连在x的根节点上   或father[b] = a为x连在y的根节点上;  
}  

/*
    在findRoot(x)中:
    路径压缩 迭代 最优版
    关键在于在路径上的每个节点都可以直接连接到根上
*/

#include
#include
#include
#include
#include
#define each(a,b,c) for(int a=b;a<=c;a++)
#define de(x) cout<<#x<<" "<<(x)<

快速幂

typedef long long ll;
//如果是奇数,res乘上a,a增倍,n缩小
ll powermod(ll a, ll n, ll mod)
{
    ll res = 1;
    while (n > 0)
    {
        if (n & 1)
        {
            res = (res*a) % mod;
        }
        a = (a*a) % mod;
        n >>= 1;
    }
    return res;
}
CSP的压缩编码是一个裸的区间DP,需要多加整理模板
int gcd(int a, int b)
{
    return b == 0 ? a : gcd(b, a%b);
}
虽然放弃希望了,但是可以给队友施压

你可能感兴趣的:(C++ 奇淫技巧(缓更))