考前速记

来源:互联网 发布:linux修改文件读写权限 编辑:程序博客网 时间:2024/04/28 11:40

1.gcd & lcm

int gcd(int a, int b){    return b ? gcd(b, a%b) : a; }int lcm(int a, int b){    return a / gcd(a, b) * b;}

2.exgcd

int exgcd(int a, int b, int &x, int &y){    if(b == 0){        x = 1; y = 0;        return a;    }    int x1, y1;    int e = egcd(b, a%b, x1, y1);    x = y1;    y = x1 - a / b * y1;    return e;}

2.快速幂取模

int mul(int x, int y, int mod){// x^y % mod    int res = 1;    while(y){        if(y & 1) res = ((res % mod) * (x % mod)) % mod;        x = ((x % mod) * (x % mod)) % mod;        y >>= 1;    }    return res;}

//线段树
//3.高精度//小数
4.优先队列
5.离散化
6.lower_bound
7.floyd最小环
8.卡时

#include <ctime>clock_t clockBegin, clockEnd;void dfs(){    if(check()){        clockEnd=clock();        if(clockEnd-clockBegin>=950){//ctime 单位 ms            printf("%d\n",ans);        }        else{            ……        }    }    ……}int main(){    clockBegin=clock();    ……    dfs();    ……    return 0;}

π=acos(-1.0);
数学定理
首先,可以用组合数学证得,如果一个数n=a1x1×a2x2×……×akxk
那么,设函数ex-phi(n)表示n的约数的个数
可推导出ex-phi(n)=(x1+1)(x2+1)…(xk+1)

通过计算可以得出当N在2000000000以内时,最多只有10个素因子
证明:2*3*5*7*11*13*17*19*23*29≈60e>20e

小素因子多一定比大素因子多要优秀
小素因子多那么总因子多,ex-phi(n)肯定比大素因子多的大。

模拟,贪心,枚举
排序(五大排序算法)+ s t l的排序 和 cmp
hash的设计 和 康拓展开
搜索 dfs,bfs,dbfs,iddfs,状压搜索(状态压缩来表示状态),还有A*
搜索优化
二分及其使用条件
dp(lcs,lis,最小字段和,区间dp,背包等等问题和题目练习)
rmq问题(st算法,线段树写法,朴素写法,建笛卡尔树)
归并排序求逆序对问题
树与树型dp 及其题目
多叉树和多叉树转二叉树
状压dp及其题目
博弈类题目及其解法
dp优化 斜率优化和四边形优化
并查集及其应用
线段树的设计及其用法和题目练习
树状数组(一维二维)及其应用情况和题目练习
拓扑排序和拓扑判环
最短路(优先队列+dijstra,spfa,flayed),spfa判断环,floyed求最小环和传递闭包 及其 练习
最小生成树(并查集+kruskal,prim)及其题目
lca(倍增,转rmq,tarjan)及其题目
树上操作点,子树,链路修改问题 及其 树形转线性方法及其题目练习
二分图和匈牙利算法,最大匹配与最小覆盖题目 应用
数据离散化
字符串匹配kmp及其应用
数论(快速乘法,快速幂,快速幂取莫,欧拉函数,费马小定理,唯一分解定理,素数和线性晒素数,中国剩余定理,同余运算,扩展欧几里得和欧几里得,解不定方程和同余方程,大质数取莫中逆元的用法)

0 0
原创粉丝点击