还没实现的部分, 参考我以前的acm_lib, 在u盘里.
- 一些数学函数, 几何相关?
- 二维, 三维数组的遍历方向数组. 二维的4向, 8向; 三维的6向, 26向(可能不需要)...
- 开栈.
- efg_cvt, 浮点数截断.
- 整理一份全局符号表, 或者写关键头文件或者函数的help(现在用宏可以方便写).
不写宏了, 有些oj不支持(比如洛谷). 还是写md, 类似cppreference的格式. - div_t, round之类的math.h或stdlib.h的好东西.
- 涉及到数组的代码, 目前是vector参数, 之后改为iterator + len的形式.
- 加一些(st, len)的宏, 包括反转的表示.
- direct_io.msg, 要和debuger类输出一起使用, 才能在assert之前输出东西.
测试的话使用一个无限递归函数, 每层输出函数名, assert固定层数.
如果不用bug输出, 那么fio.msg不会显示, 最后只有assert的显示.
原因是ios::sync_with_stdio(0)之后, cout不能在assert前输出, 但是cerr可以.
debuger类重写了, 还没合并.
- 各种随机数据生成器, 参考cyaron. 或者不写, 直接用cyaron.
- 日期类.
- 数位dp.
- 博弈.
- 二维bit.
- lct.
- 动态区间线段树.
- 二维线段树.
- cdq分治.
- 块状链表, luogu p4008, 4567, 2042.
- 树套树.
- pbds头文件, 好像win上编译不了? 各种数据结构都要测试一下.
- 堆(二叉, 左偏, 配对).
- 败者树.
- 大浮点数, 大整数已经有了, 稍微改一下, poj1001.
- 分数类, uva12558.
- 离散对数.
- 莫比乌斯.
- 矩阵类.
- 高斯消元.
- fft/ntt, 多项式相关知识和代码.
- 二维几何.
- 三维几何.
- lca的rmq写法(非模板rmq, 要改一下取数据操作).
- lct.
- 树分治.
- 搜索专题.
- 网络流相关.
- 生成树.
- 割点/边.
- 双连通.
- 匹配.
- 2sat.
- 其他匹配算法.
- 后缀自动机.
- 后缀树.
- hash表, 接口与std一致.
- 矩阵hash.
- 康托展开.
- 搜索专题, 从初级到高级, 应该有个范式, 写md.
- 尺取法, 尝试各种题, 写md. 写法用当前点为搜索点的形式.
- 莫队.
- 单调栈/队列.
- 魔方题的做法, 从置换的原理讲起.
- cppreference里面能用到的函数都列一遍, 做个lib整理, 模板里面有using了.
- github上的3份很好的模板都合并过来.
- replace脚本改进, 现在是直接替换include文件, 不能处理include同文件2次的问题.
本来考虑用gcc -P -E来完成宏替换, 但是不能控制层数(一次性全部替换了所有宏, 但是一般来说宏是我们为了精简代码而写的).
可以用注释在头部的meta信息(头文件不include其他头文件, 但是注释需要的头文件, 自定义一个统一的格式),
配合正则替换来扫描需要include的头文件, 顺便做个拓扑排序.
以上是naive做法, 可以用来练习sed... 正确的做法是建立一个图表示头文件关系, 然后按照拓扑关系去include之. - 头文件可以加特定格式注释, 来提示一些内容, 可能可以方便脚本操作, 脚本替换时可以忽略注释行.