知识点清单和学习任务计划

整理

业界良心整理

近期的学习计划和任务

准备学的

  • K-D tree
  • treap+可持久化
  • 圆方树
  • 斯坦纳树
  • 双联通分量
  • 费用流消圈算法
  • 线段树优化的建图(单源最短路)(1)(2)
  • DP的题目(30/130)
  • 省选准备BLOG
  • +1/-1的RMQ+LCA+笛卡尔树
  • 画图论的图的好网站IN

复习内容

  • 知识清单 密码hpxx【Orz】【请勿随便转载】

  • 线性筛各种东西(素数,欧拉,莫比乌斯)

  • 莫比乌斯反演分块法

  • Tarjan的一类算法(缩环,缩点,连通块,lca)

  • 字符串内容(后缀自动机etc…….

  • 计算几何内容

  • link_cut_tree(对于子树的操作)

  • 可并堆左偏树

  • SCOI2016的幸运数字的点分治版本

  • 树形dp,图论的知识,01规划,点分治,树剖,LCT


还没打过的模板

  • P3387
  • P3810
  • P4238
  • P4245
  • P3835
  • P3380

知识点

  • 字符串的内容:
    • 后缀类
      • 后缀数组
      • 后缀自动机
      • 广义后缀自动机
    • 匹配类
      • kmp和exkmp
      • AC自动机
      • LCP
      • LCS
    • 回文类
      • Manacher算法
      • 回文树
    • 其他类
      • 最大(小)表示法
      • 哈希
      • 字典序

  • 图论:推荐友链文章
    • 最大流
      • 普通的增广路算法
      • EK算法
      • ISAP算法
      • Dinic算法
      • 最高标号预推流算法HLPP
      • 有上下界的最大流
    • 最小割
      • 最小割最大流定理
    • 最小费用最大流
      • SPFA算法(LLL+SFL)优化
      • Bellman-Ford
      • zkw
    • 0-1规划图论部分
      • 最大密度子图
      • 最优比率环
    • 费用流消圈算法
    • 最大点权独立集(二分图和其他)
    • 最小点权覆盖集(二分图和其他)
    • 最大权闭合子图
    • 最短路
      • Floyd算法
      • SPFA算法
      • Dijistra算法
      • k短路的A-star算法
      • 数据结构优化建图法
    • 生成树
      • 最小生成树
        • prim
        • Kruskal
      • 次小生成树(LCA+Kruskal)
      • 动态最小生成树
      • 最大生成树
      • k小生成树
    • 二分图匹配
      • 最大流源点汇点法
      • KM算法(匈牙利算法)
    • 2-Sat
      • k-SAT
    • 联通分量
      • 暴力
      • Tarjan
      • 双联通分量
        • 点双
        • 边双
      • 强连通分量(Tarjan)
    • 桥和割点
    • 关键路
    • 拓扑排序
    • 欧拉(回)路
    • 哈密顿环(最小哈密顿环 广度优先 深度优先 爬山法 分支界限法)
    • 最小树形图
      • 朱刘算法
    • 最大(小)瓶颈路 tm
    • 其他
      • 最近公共祖先
        • 倍增法
        • Tarjan法
      • 并查集推荐文章
        • 路径压缩
        • 带权并查集
        • 可持久化并查集
        • 逆向并查集
        • 种类并查集
        • 动态并查集
      • SPFA判断负环(深搜版的SPFA)
      • 差分约束
      • 对偶图

  • 数论:
    • 欧几里得算法Gcd和Exgcd
    • 逆元
      • 费马小定理
      • 扩展欧几里得定理
      • 欧拉定理
    • 容斥原理
    • 莫比乌斯反演
    • FFT/NTT
    • 高斯(约旦)消元法
    • 复数
    • 卢卡斯定理
    • 欧拉定理
    • 莫比乌斯函数
    • 欧拉函数
    • 微积分
      • 洛必达法则
      • 牛顿逼近法
      • 牛顿迭代法
      • 公式
    • 斐波那契数列
      • 模拟法
      • 递归法
    • 卡特兰数列
    • 排列组合
      • 公式法
      • 低精度直接套公式
      • 取模求逆元或用卢卡斯定理
      • 递推法
      • 杨辉三角 C[i][j]=C[i1][j]+C[i1][j1](C[1][1]=1,C[x][0]=1) C [ i ] [ j ] = C [ i − 1 ] [ j ] + C [ i − 1 ] [ j − 1 ] ( C [ 1 ] [ 1 ] = 1 , C [ x ] [ 0 ] = 1 )
    • 等差等比数列
      • 求和
      • 求第几项
    • 线性筛
      • 素数
      • 欧拉函数
      • 莫比乌斯函数
    • 中国剩余定理(孙子定理)
    • 矩阵乘法加法,快速矩阵乘法strassen算法
    • 线性基
    • 分圆多项式
    • 裴蜀定理
    • 杜教筛
    • stirling 公式(n!的近似值)

  • 数据结构
    • 树状数组(bit-tree或Fenwick树)
      • 二维树状数组

      • 大根堆
      • 小根堆
      • 系统自带的堆(set)
      • 斐波那契堆
      • 配对堆
      • 可并堆
    • 二叉树
      • 普通的二叉索引树
      • splay
      • 红黑树
      • AVL树
      • SBT
      • treap
        • 旋转式
        • 非旋式
    • 线段树好文章 2 3 4Good
      • 主席树
      • zkw线段树
      • 二维线段树
      • 扫描线
      • 离散化和动态开点
    • Trie树
    • 树套树
    • 替罪羊树
    • 虚树
    • 树链剖分
    • 竞赛树
    • st-table
    • 哈夫曼树(编码k位)
    • 圆方树
    • 斯坦纳树
    • 可持久化数据结构
    • link_cut_tree
    • K-D tree
    • O-C tree
    • 矩阵树
    • euler tour tree
    • Frederickson’s topology tree
    • 可并堆
      • 左偏树(Leftist Tree)
      • 二项堆(Binomial Heap)
      • Fibonacci堆(Fibonacci Heap)
    • top—tree

- self-adjust top tree

  • DP(动态规划)
    • 普通线性DP
    • 拓扑序的DP
    • 树上的树形DP
    • 期望和概率的DP
    • 状压DP
      • 插头DP(轮廓线的描述)
    • 数位DP
    • 其他算法+DP
      • 矩阵优化
      • 斜率优化
      • 数据结构优化
      • 数论优化
      • 滚动数组
      • 四边形优化
    • 背包问题
      • 普通背包
      • 有限背包
      • 完全背包
      • 无限背包
      • 多条件多限制背包(潜水员)
      • 可持久化的背包(U16816 最后的战役)
    • 记忆化搜索

  • 分治
    • 二分(线性函数)
    • 三分(有凸性的函数)
    • 整体二分
    • CDQ分治
    • 点分治
    • RMQ分块
    • 莫队算法+树上莫队

  • 计算几何
    • 二维
      • 向量
      • 点积叉积
      • 基本函数
      • 凸包
      • 旋转卡壳
      • 半平面交
      • 判断点在多边形内
      • SPLG平面区域
      • 对偶图
      • 增量随机算法
    • 三维
      • 向量
      • 点积叉积

  • 博弈论
    • SG函数
    • minimax search
      • alpha-beta剪枝
    • 尼姆博弈
    • 巴什博弈
    • 威佐夫博奕
    • 约瑟夫环(问题)
  • 推荐文章

  • 神经网络
    • sigmoid函数
    • Relu函数
    • softplus函数
    • thanh函数
    • softmax函数

  • 其他
    • 模拟退火
    • 爬山算法
    • 差分(树上或其他)
    • 自动机
      • 有限状态
    • 排序
      • 冒泡排序
      • 计数排序
      • 选择排序
      • 基数排序
      • 归并排序
      • 快速排序
      • 系统自带sort
    • 哈希
      • 字符串的hash
      • 离散化的hash
    • 模拟
    • 暴力,搜索(DFS)
    • 迭代
    • 高精度算法
      • 加法
        • 高精度非负数加法
        • 高精度整数加法
        • 高精度小数加法
      • 减法
        • 高精度非负数减法
        • 高精度整数减法
        • 高精度小数减法
      • 乘法
        • 整数:
          • 高精度乘以低精度
          • 高精度乘以高精度(FFT)
        • 高精度小数乘法
      • 除法
        • 整数高精度除以低精度保留余数
        • 整数高精度除以低精度保留余数
        • 小数高精度除法
      • 高精幂
      • 高精阶乘
      • 高精开根*
      • 压位高精
    • 逆序对
      • DP法
      • CDQ动态逆序对
      • 树套树动态逆序对
    • k维偏序
    • 进制转换
    • 启发式合并
    • 覆盖问题
    • 随机函数,随机求取概率
    • 数据分类分块,黑白染色
    • Goldreich-Levin 算法 VFK的WC2015T2
    • MD5 算法
  • STL(C++)
    • set
    • vector
    • map
    • queue
    • list
    • pair
    • bitset
    • pb_ds
    • stack

程序优化

  • 读入输出优化
inline int read()
{
    int X=0,w=1; char ch=0;
    while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}
    while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();
    return X*w;
}
inline void write(int x)
{
     if(x<0) putchar('-'),x=-x;
     if(x>9) write(x/10);
     putchar(x%10+'0');
}
void get(int &x)
{
    char c = getchar(); x = 0;
    while(c < '0' || c > '9') c = getchar();
    while(c <= '9' && c >= '0') x = x*10+c-48, c = getchar();
}

void put(int x)  
{  
    int num = 0; char c[15];
    while(x) c[++num] = (x%10)+48, x /= 10;
    while(num) putchar(c[num--]);
    putchar('\n'); 
}
cin.sync_with_stdio(false);
std::ios::sync_with_stdio(false);//cin读入优化;
  • 手动开栈
#include
#include
#pragma comment(linker, "/STACK:102400000,102400000")//开栈 1G

int size=20<<20;
char *x=(char*)malloc(size)+size;
__asm__("movl %0,%%esp\n"::"r"(x));//手动开栈32M 
  • Ox优化
#pragma GCC optimize(2)//O2
#pragma GCC optimize(3)//O3
  • 快速头文件
#include 
  • 流输入输出&fread
inline char nc(){
  static char buf[100000],*p1=buf,*p2=buf;
  return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}//读入字符
#include
namespace Read
{
    const int S = 1 << 20;
    char frd[S], *ihed = frd + S;
    const char *ital = ihed;

    inline char inChar()
    {
        if (ihed == ital)
            fread(frd, 1, S, stdin), ihed = frd;
        return *ihed++;
    }

    inline int get()
    {
        char ch; int res = 0; bool flag = false;
        while (!isdigit(ch = inChar()) && ch != '-');
        (ch == '-' ? flag = true : res = ch ^ 48);
        while (isdigit(ch = inChar()))
            res = res * 10 + ch - 48;
        return flag ? -res : res;
    }

    char fwt[S], *ohed = fwt;
    const char *otal = ohed + S;

    inline void outChar(char ch)
    {
        if (ohed == otal)   
            fwrite(fwt, 1, S, stdout), ohed = fwt;
        *ohed++ = ch;
    }

    inline void put(int x)
    {
        if (x > 9) put(x / 10);
        outChar(x % 10 + 48);
    }   
};//借鉴的他人的我自己从来没用过
  • 输出输入文件上交OJ时防止忘删
#ifndef ONLINE_JUDGE
   freopen("test.in","r",stdin);
   freopen("test.out,"w",stdout);
#endif   
  • 多组数据一键生成
char filein[20];
int main()
{
    for(int finum=1;finum<=M;finum++){
        sprintf(filein,"name%d.in",finum);
        freopen(filein,"w",stdout);
        out();
        fclose(stdin);
    }
    return 0;
}//数据生成,out()为自己写的数据生成函数,M为最大组数

char fileans[20],filein[20];
int main()
{
    for(int finum=1;finum<=M;finum++){
       sprintf(filein,"name%d.in",finum);
       sprintf(fileans,"name%d.out",finum);
       freopen(filein,"r",stdin);
       freopen(fileout,"w",stdout);
       work();
       fclose(stdin);
       fclose(stdout);
    }
    return 0;
}//数据答案生成,work()为你的标准程序
  • 对拍bat(批处理)代码
//创建一个后缀为.bat的文件然后在里面写入如下代码
//不要注释部分
set num=0 //设置对拍多少组,可以不要
:st //开始位置
outout.exe //数据生成器的exe文件
std.exe  //标程的exe文件
your.exe //你的程序的exe文件
fc ans.out your.out //答案和你的输出比较
set /a num+=1 //将num++,若想拍无限组就不要这句
if "%num%"=="10" goto end //这句是限制只拍10组
if %errorlevel%==0 goto st //没有错就继续
pause //有错就暂停
:end //结束位置
  • 知识清单swf :密码p8pc
  • AC自动机演示swf :密码e3h9
  • CF赛制

此博客动态更新,若有不全的东西私信me

转载注明出处,可能没有人看吧,我太蒟蒻了

你可能感兴趣的:(学习笔记)