既然我都退役了就把这种东西发出来吧。
2017.12.25: dinic的bfs记得初始深度赋值0。 dinic注意return的是什么东西! dinic玄学优化:如果!ret,则设定dep=-1。 2017.12.26: 注意修改前代码不会爆int,修改后的代码会爆int。 2017.12.27: 数组开小辣!30分暴力爆零辣!2333。 有些题目的数组大小是n个数倍,非常坑人。 2017.12.18: 注意文末回车,会贡献PE。 2017.12.28: 标记永久化线段树记得与大区间标记取max。 多维度题注意坐标转换,永远乘和循环垂直的! 线段树存区间左右导致MLE。 线段树注意操作顺序。 区间lson、rson不要打反。 2017.12.29: 线段树分情况讨论情况完成后记得return! 网络流权值转换的做法记得明确权值意义。否则WA。 迭代不好写的东西用记忆化搜索去搞。 2017.12.30: 关于SAM的板子:修改parent的时候看清楚修改了谁,用map存next时看明白赋值源是谁,后面推上来匹配长度记得和节点字符串长度取min。 2017.12.31: 分块预处理后记得临时数组、临时变量清零! SAM最后记得迭代修改,length看清楚是谁的。 记得注调试,即使是样例没有触发的调试。 最大权闭合子图有两种东西的时候记得+n或+m转换坐标! 注意变量意义,sort和reverse的时候看清楚是+n还是+len。 2018.01.01: SAM注意标记可上传性,否则TLE。 2018.01.02: 注意是否含等(至少半数不含等)? 注意输入n,m顺序(部分题目先n后m)。 注意maxn,maxm的问题。(可能今天状态太差不适合写题QAQ)。 2018.01.03: 对于二分答案限制连边的,防止连着走inf需要拆点。 floyd记得初值dis[i][i]=0。 对于费用流问题,如果某种资源被转换为另一种资源,那么把这种资源连向汇,从源连向另一种资源。 1别打成i。 2018.01.04: 线性计算μ的时候质数初始化为-1。x2 记得把调试时候的鬼畜数组大小改回去。 预处理的时候有些东西能比n<<1(f(n))大的话就预处理到maxn。 2018.01.05: 看清楚题目输出到n-1还是n,多输出一行就爆零了。 SAM数组记得开2倍...... 2018.01.06: 预处理碰到巨大的等比数列记得求和。 函数中的局部变量不要和需要用到的全局变量重名,要不然调试要命。 2018.01.08: 注意树状数组边界应该是n还是maxn。 杜教筛记得写-=,初值注意。 有乘有加记得提前取模。 单点线段树改区间线段树的时候,记得给查询加push! 2018.01.09: 参数传int时看看会不会乘爆。 long long 算内存的倍数为8! 字符串差分记得从后往前算。 2018.01.10: 在滑动指针时注意谁等于谁。 滑动指针注意下标是p还是i。 写辅助程序看明白需要啥再写(几个元的问题)。 高斯消元注意特判消的j!=i。 注意数组名字的问题,sum和mem。 反演化成μ不好做时试一试phi。 如果输入数值大于1e9,记得初始值取模! 2018.01.11: 尽量少用指针,内存占用与评测机体位架构有关。有概率MLE。 数据nm大小没有保证的时候不要滥用memset,会TLE。 单调队列注意初始队列是否应该含元素0,注意dp开始的初始值。 数位dp有时候小于这个条件没办法递归,那么改成小于等于。 unordered_map这种东西最好别用,CE了就爆零了。 2018.01.12: 注意数组大小(即使是卖萌题)。 16进制输出不说大小写直接报警。 注意题面中判定的小于是否含等,不良心的样例就让你WA了。 2018.01.13: kdtree别忘了cmp=dir,siz在正确的位置维护,插入的时候特判当前点为空,update的时候不要更新两次sum(以前加了现在又加)。 维护多个标记时记得维护全面。 不该覆盖的标记不要覆盖。 类欧几里得算法注意比较的时候除法下去整问题,注意特判输入0,注意特判边界0,注意特判边界等。 整体二分注意二维数组不要开反,注意lr是哪个。 提交题目前记得修改掉调试范围。 今天状态不好真的不适合写题QAQ。 2018.01.14: 替罪羊树正确写法是每次重构最浅的不平衡点。 2018.01.15: 轻易别碰double二分,eps设小了T,设大了WA。 修改的时候注意修改的是源数组还是新数组。 做MST时记得sort。 i别打成l! 区间覆盖的线段树记得memset标记,另外查询记得push。 费用流建图时变量不要重名。 做最长反链记得预处理连通性。 当题面中有多个数据范围相互冲突的时候以最大的而不是最靠前的为准(这个不赖我啊)。 2018.01.16: 线段树更新节点的时候记得恢复原来初值。 注意一些强制在线是否需要互换lr(这是审题的问题!)。 费用流不要用ed去更新其他点的距离,可能出现负环。 2018.01.17: 树链剖分注意打进去的是num还是top。 注意maxn,maxm,这是第三次了! 链剖求子树最近点需要ret=top[pos]. 2018.01.18: 杜教筛phi的初值是x*(x+1)>>1,而不是x-1。 网格图黑白染色后跑最大匹配需要连单向边,否则退流时会出问题(相当于在下面加了一个中继节点)。 2018.01.19: 正反做两遍的题注意逆序后清空临时数组! 把无关的循环提取到里面,memset算一个for循环。 区间dp枚举位置可以先起点降序,再终点升序(其实这不是WA的理由,WA的原因是变量重了)。 枚举区间里面for循环里有len了,在外面的东西就不要叫len了...... 斜率优化如果有0?用一些猥琐的方法把0去掉就行了。输出方案?记录偏移量。 对于取模的题记得输出前加模数再取模。 BSGS记得特判一些奇奇怪怪的无解情况,不要把特判写挂。 2018.01.20: maxn,maxm打反第四次get,必须想一个有效的办法了呢。 整体二分记得给树状数组大小赋初值。 离散化后的数据记得转回去。 无解输出-1的记得判定。 2018.01.22: 内存计算以手算为准,不要看别的OJ怎么算。不同OJ不一样。 二分上界应该比输入最大值大,否则会WA。 双倍经验题目记得看是否需要改输入格式。 2018.01.23: 点和边数组不要全都开双倍,会MLE。 注意数据范围是1e6还是1e7,数不清楚就复制粘贴。 迪杰斯特拉不一定松弛n-1次,因为图可能不联通。 2018.01.24: 网络流的cov记得是f(x)-1+sta,不要写成-sta+1,这样有点会和源点重合。 dinic的dep[t[at]]>dep[pos]不要写成dep[ed]>dep[pos]。(我都在写点啥啊) vis二维数组该开maxl别打成maxn。会MLE+RE。 定义两重>>时,记得打空格! 堆贪心记得一进一出,还有加减顺序。 在线筛卡常转离线的,记得内层max外层min。 2018.01.25: 动态memset数组的时候注意数组第n项有没有用,是*n还是*(n+1)。 启发式NTT合并后长度不应该是n,而是应该是原来长度的和。否则长度指数级增长会RE。 2018.01.26: 分块+二分记得lower_bound()右边为开区间,需要+1。 不要把<=打成!=(我并不明白发生了什么) 写maker的时候注意区间左右,否则会莫名其妙拍出错。 写文件快读记得把scanf替换干净,这些东西不能混用。 2018.01.27: 二分图连边注意在符合附加条件的情况下是否符合基本条件(否则过不了样例QAQ)。 2018.01.28: 强制在线题注意mask是局部变量还是全局变量。 2018.01.29: FFT的len<<=1别打成len++。 FFT对内存本来就是极限考验,谨防MLE(系统没计算器你不会手算啊)。 字符串FFT题目注意保证最后答案合法。 离散化后的数位dp注意离散化后的条件在容器中不存在的解决方案。(用脸滚键盘的数据测试即可) 网络流题正确预估边集范围。 2018.01.30: 手写队列注意数组开到队列长度级别。 平时编译器版本不要太高(Gcc7.2.0,Gcc6.4.0什么的),否则考试低版本编译器会莫名其妙CE。(BZOJ CE got)。 二维循环限制n别打成m。 2018.01.31: 带平方项的斜率优化注意会不会猥琐地爆int。 数据范围注意是总和的范围还是单个的范围。 树形dp边长数组记得开2倍(这个错误真查不出来)。 可回退的树状斜率优化不要存储全部修改,会卡n^2。 vector操作太多会引发内存泄露导致MLE。 重定义+的时候注意返回ret而不是a或b。 手动去重统计size的时候记得判断ns[i]!=ns[i-1]而不是i+1。 2018.02.01: FFT长度需要在比n大的同时再翻一倍,因为你需要考虑到第n项与第n项卷积的结果。否则会WA首位两个值。 删除iostream头文件的时候看看有没有调用max什么的。 拓展lucas定理计算的时候注意递归除pi而不是(pi^k)。 500*500是2.5e5而不是2.5e4。 2018.02.02: 斯坦纳树生成子集的时候看是否需要reverse一下位置。 斯坦纳树判断子集是否合法的时候注意只有半包含非法,完全包含和完全不含均可。 2018.02.03: 分块FFT计算生成函数记得让长度比最大值的二倍+1大。必须+1,否则一堆1你就WA了。 总之就是各种WA水题,组合数算不对...... 今天状态真的不好啦...... 2018.02.04: 做数论题记得特判0为输入,0为答案的情况。 输出时len别打成n!mdzz...... 卷积减去自身对自身贡献时应该减sum[i]而不是sum[i]^2(写对FFT只是A题的一小步QAQ)。 2018.02.05: 做字典序最小的题注意保证的是谁的字典序最小,尤其是有两个互逆的数组的时候。(Bzoj3168我们保证pir最小,所以矩阵要转置一下QAQ) 并查集合并要明白是谁跟谁合并。 BZOJ4269错误的合并方法可以用(4 2 1 2 3 4 2 2 4 4 WA掉,应该输出90而WA算法输出9,因为你会把2和4一起合并上去QAQ)。 n个叶子的二叉树最多2n个点...... 内存池自带大常数...... 2018.02.06: 别计算全程long long最后打一个int ret。 BZOJ4883数据有毒开二倍数组才能过QAQ。 多case记得初始化ans。 Bzoj3571叉积为负尽可能大。 关于混合图欧拉回路,无向边在网络流中的方向应该为初始钦定方向的反方向(连成有向边)。 否则会有一条边算两次的情况(自行脑补一下就明白了QAQ)。 然而以前加无向边都能AC的说......我可能学了假算法,写了假题。 inline函数记得写返回类型,否则概率CE。 不确认数据是否合法时让自己的代码尽可能容错(跑出更优答案),这样如果真的纠纷也占优势QAQ。 注意值域只有01的东西别打出2。 Bzoj3046特判的不止角上,还有两边。 2017.02.07: 有两个query递归的时候不要打混QAQ。 线性基不保证初始状态为消元整齐的,需要手动高斯消元维护该性质。 dp的时候记得让inf向inf转移。 注意强制在线!没有看到强制在线get到的不一定是WA,还可能是RE。 先全算再减的dp题目注意统计答案时答案的初始值。 2018.02.08: manacher题目注意占位字符和原字符那个能更新答案。 机子炸了停更(雾)。 2018.02.09: 大力调试法十分有效2333。 分块题目注意能更新答案的块边界要不要+1。 强制在线题目当心解密中间值爆int(这十分猥琐)。 写哈希别忘了预处理pows,没人卡233做base+自然溢出(雾)。 splay提取区间注意左端点用不用单独算进去。 2018.02.10: 差分约束SPFA记得把没用的点continue掉,因为有用的点可能和没用的点构成负环。 主席树按秩合并不能回收节点!(因为你会把0号树的节点回收掉......) 权值的东西查kth向右走前k记得减去左子树size。 题目第一行的T不一定是数据组数,还可能表示这是第几组数据。 区间最大某子段的题目注意这种子段可能由左孩子的右子段和右孩子的左子段合并而来,记得取max。 注意对数组从0开始的蛋疼题目进行左边转化QAQ。 前缀分块记得算入前缀答案。 含相同元素维护动态逆序对要特判掉相等互换的情况(坑人啊)。 莫队记得先生成左端点再排序再计算答案(忍住没有打自己)。 Bzoj有毒,int每次计算转longlong比原生longlong乘int快......另外文件快读,文件输出和O3(雾)有奇效。 2018.02.11: 后缀数组倍增算法注意每次更新m,初始化的时候rank为in,tp为i。 主席树的话数组一定开够! 二分注意返回值是开区间还是闭区间。 做题记得特判有毒的数据,特判区间开闭。 线段树分治多个退出点的情况记得在每个都reset,(相信大力调试法还是会出奇迹的)。 2018.02.12: 双指针卡区间时注意区间开闭与答案关系。 多项式乘法不能用0去判定输出终止因为答案可能有0。 写NTT的时候乘完原根记得取模! 记住BZOJ是世界上最爱卡常数的OJ没有之一(强烈谴责BZOJ卡常数行为!) 2018.02.13: 注意输入顺序。 h别打成x。 复杂的网络流题目注意多个if间的逻辑关系,删除应该被去掉的边。‘ 2018.02.14: 你知道负数不能用unsigned吗? 2018.02.15: 注意边是否有向。 BZOJ神题放普通堆过把配对堆卡了。 用pbds不要作死乱搞,就重载小于号为大于即可。 splay打上赋值标记后记得splay上去应用标记;splay打上reverse标记记得翻转; splay维护信息注意标记意义:在当前点已经应用。并注意在适当时间应用标记。 2018.02.16: LCT的access判断方式是x而不是fa[x]. 更新答案时要用子节点的答案和当前节点答案更新而不是子节点的数值和当前节点数值更新(你是智障吗)? 题面让你加快读你死活不写,MDZZ。 LCTlink的时候要把一个点makeroot。 2018.02.17: vector访问越界也会RE(而且你不知道发生了什么)。 树上出环注意输入顺序。 2018.02.18: LCT题目别忘了判断两个点不在一个联通块内。 LCT怎么判断联通性?一路无脑往上找即可。为什么以前这样会WA?我不知道别问我QAQ。 点分治每次计算记得重置cnt。 点分治上层siz不是siz[fa]-siz[pos]而是sum-siz[pos]。 点分治记得统计重心到其他点的答案。 点分治双指针滑动的时候不要让右指针越界(虽然并不容易构造)。 网络流涉及坐标转化的记得数组大小翻倍。 计算点到直线距离时候分子记得加fabs。 减法优先级高于赋值所以请用括号括起来运算中的赋值语句。 2018.02.19: 二次函数定点是-b/2a。 关于直线的maker必须包含x1==x2的情况。 关于浮点数的题目一定注意分母为0的情况,0/0=nan。 2018.02.20: 实在是不想动啊,怎么办? 2018.02.21: 当一个题目有多个cnt时,注意变量不要重名。 maxn,maxm打反第五次got。 对于输入的sin/cos应该看做y/x。 注意sort的边界是n还是cnt。 2018.02.22: 写暴力记得开long long,如果出题人没告诉你范围的话直接去问好了。 网络流题看清循环边界是n还是m(怎么还会出这种愚蠢的错误啊)。 记得把调试时修改的二分上界改回去(不知道多少次了QAQ)。 线段树+分类讨论真的写不对,我宁可用ETT去做! 2^31确实需要long long,但是凭什么别人用int就过了,我就得开long long啊。 2018.02.24: 注意线性规划时候矩阵两维不要开反。(变量多则第二维大) 2018.02.25 暴力计算组合数在return前记得取模mod(mdzz)。 注意不要看错数据范围,例如300看成200...... 局部变量初值问题(不知道多少次了)。 2018.02.26: LCT在更新区间信息前先更新父子关系。 哈希间接寻址注意内外层顺序。 组合数计算记得m=min(m,n-m)。 高维数组寻址顺序不要写挂。 2018.02.27: 早晨起床太晚不去学校会被D(不)。 不要把无用的0状态计入答案。 遍历线段树单点统计答案的题目注意不要在非叶子节点统计答案。 生成函数题目初始化记得乘偏移倍数(例如初始化相同数的平方、立方)。 网络流需要坐标转化的题记得打cov(i)。 singledge是单向边,反向弧需要流量为0。 有源汇可行流题目有时候需要把源点汇点出入度也统计上(不知道为什么?) 线段树修改记得判定右区间是否合法。 128mb内存开不下1.6e7个long long,会MLE。 线段树写的好看只需要4倍数组。 2018.02.28: 关于长度的离散化记得转回。 dfs别调用pre。 kdtree没法find,需要被动查询。 2018.03.01: singledge是单向边,反向弧需要流量为0(X2)。 迭代构建记得更新last指针(wa了一晚上的故事)。 2018.03.02: 程序异常退出不一定是RE,还有可能是调试退出点没删...... 动态点分治维护的是到所有点到分治父亲的信息而不是到自身的(话说到自身的那么多点也没有用啊)。 manacher记得用mx-i和pir[pos*2-i]取min. 字符串题记得特判一些奇怪的边界(长度为1)。 判定奇偶区间时一定要先处理再判,可能相等可行。 2018.03.03: 记住200*200=4e4。 三分最后用l,r更新答案而不是lmid,rmid。 树上cdq分治找重心尽量靠上,否则两个点的情况会死循环。 树上cdq分治斜率优化链不要直接到根,应该到当前分治块的顶部。 关于启发式清零,注意是sizeof(int)还是sizeof(long long)。 不要写"init(n),scanf("%d",&n)",逗号表达式的执行顺序可能被乱序执行打乱,这是undefined behavior。 2018.03.04: 记得检查每一个乘法是否爆int。 莫队要先进行安全的++r,--l,防止区间错位。 对拍记得造1e9这种极限数据防止爆int。 单调莫队记得复原l指针。 关于斐波那契数列记得看清定义有没有0项。 主席树记得写return,否则卡指数。 分块数组多开,下取整后可能差很多。 2018.03.05: 加边注意是否有向! l[at]不要写成l[t[at]],水题不认真写也不能A啊。 写dinic记得把优化加全,否则会RE。 反向转换答案记得左边加偏移量存储(可能今天状态不好QAQ)。 2018.03.06: assert的时候记得特判一些合法但会导致assertion failed的特殊情况,例如两个点相同且均为LCA。 蒙特卡洛法验明血统的时候要random_shuffle(p+1,p+1+n)而不是in。 Bzoj2229:注意组内点可能通过组外点互联,注意更新组外点间答案。 莫比乌斯反演的sieve函数里面开数组记得加static(不知道第多少次get),又刷低AC率了QwQ。 有上下界的费用流如果统计出度的话,出度大的连汇点,入度大的连源点。 有上下界的费用流仅在有下界的边统计出入度。 2018.03.07: 二进制状压枚举记得让判定的id从0开始。 快速幂base=base*base%mod别写成ret(快速幂写挂身败名裂)。 n个人各建立n个点连通图总边数为n^3而不是n^2。 有时候网络流建图不设置费用,直接拆成上下界,不作差比较简单。 出度大的连超级汇点,入度大的连超级源点。 记得把初始源汇也算入上下界流图中,连超级源汇。 有时候统计最大流量,能用初始源汇间的inf边统计(一个很好的技巧)。 注意题目输入中是否存在负数,别一看绝对值就想负数。这样只会把简单的问题变得不可做。 关于矩形操作的题,别把tx,sy打成ty,sx。 网络流连边记得判能否连,cov只有01不要传参2。 网络流singledge不要写成两次都有流量,否则相当于流量翻倍。 保留3位数字最少要计算5位才能保证精度。 做题不要忘记维护次要信息(例如size)。 异或哈希很容易WA,不管Linux还是Windows都要定义一个更好的随机函数。 2018.03.08: 预处理次方的时候记住零次方是1! dp的时候注意判定可行要判定全部可以转移到的状态,转移的时候要防止重复转移。 处理关于k的方案的题循环限制条件k不要打成n。 多个数组相互拷贝的题目注意t不要打成in。 注意判定可行边界是否含等。 2018.03.09: ST表两维翻转,Log在前有奇效(寻址优化QAQ)。 2018.03.10: 写可回退并查集千万别路径压缩。 题目理解不清的时候照着一般人的思维去想,别乱想。 答案取模后不能直接进行比较,因为可能更大的数取模后更小。 在该判定范围的时候一定要用long long判定是否真的小于,不要判定是否溢出后<0,因为如果溢出量超过一轮的话会出奇奇怪怪的问题。 2018.03.11: 注意题目的数组下标开始01问题,有些题一会0一会1十分蛋疼。 交互题交互库插值WA了那我也没办法了。 if套for再套if记得打大括号。 删除无用的assert和throw,尽管理论上他不会被触发。 网络流的cnt由static改全局的时候记得修改初值。 有上下界的流出度大的连超级汇,入度大的连超级源。 2018.03.12: 反演题推出公式只是AC的第一步,你还要注意快速幂的参数的次数是否爆int。 初始化有关于线性筛vis的题,记住1不是质数。 动态计算区间范围的线段树r不要打成rr。 维护单调信息的线段树注意多种特殊情况的判断(开方0和1)。 不要随便立flag,很容易把自己扎死...... 2018.03.13: DP滚动数组记得清零。 提交前记得注释freopen(这是A题爆零的故事)。 priority_queue默认是大根堆,所以做启发式合并要把第一关键字取反。 2018.03.14: 动态插入的SAM的parent树不能用倍增维护。 注意审题和题目的暗示(不知道多少次读错题了)。 考试一定要把暴力和会的部分分打满,可能那样就前三了。 走投无路时不要咸鱼,要积极骗分。 别推galgame推太晚! 2018.03.15: 常系数线性递推WA可能是因为统计答案的时候变量名写错。 只用+=运算的数组一定记得清空。 2018.03.16: NULL 2018.03.17: NULL 2018.03.18: 我太菜了,还会暴力写挂...... 2018.03.19: 数清楚数据范围后面几个0!250*250后面是5个0。 注意返回值应该是int的东西别写成bool! 不满足答案单调性的搜索不能最优性剪枝。 实数二分不用二分100次那么夸张,自行计算二分次数。否则TLE。 线段树维护一次性变化标记的时候记得把跨区间的push下去,显然这些标记不会再造成变化,所以直接push就行。 注意维护语句的共性和特性。 2018.03.20: 注意前缀和为in[i]+=in[i-1],而不是in[i+1](恭喜获得mzdd奖)。 预处理的大小限制千万别写错。 注意mx[pos]别写成pos。 2018.03.21: NULL 2018.03.22: 非sqrt(n)分块注意数组大小为blocksiz还是n/blocksiz。 强制在线题目记得初始化lastans。 因为2e2打成2e1而TLE...... 细节题注意答案是否仅会变化一次(单调性)。 bitset是敢卡1e9的。 增量维护LCA时记得维护dep。 实数二分不要二分太多次,否则TLE!!!(这大概是第3次了) 虽然改变带来的不一定是好的结局,可是只有改变才能带来好的结局。 2018.03.23: += %=别嵌套太多层,会莫名其妙WA。 2018.03.24: NULL 2018.03.25: 注意分治不联通判定-1的情况和边界特判。 多个标记的线段树修改不要写混。 不要遗漏下取整之类的条件,可能导致题目变得不可做。 2018.03.26: 蒟蒻只会爆零...... 2018.03.26: NULL. 2018.03.27: sam拓扑排序的时候判断fa[i]别写成!fa[i],否则会导致排出来1-cnt的顺序。 BSGS别忘了每次迭代now。 BSGS+exgcd特判a=0的神奇无解情况。 2018.03.28: 前缀和计算记得特殊处理前缀0。 写杜教筛求phi记得给答案赋初值。 写拉格朗日插值记得算清楚次数界。 2018.03.29: 有些奇怪的数学题数学解法不好做时考虑转化图论建图(别浪费时间)。 二分验证题目注意特判树根的情况。 网络流注意冗余边集大小是否足够。 网络流记得初始化cnt=1。 网络流题bfs的时候memset的深度应该为-1而不是0! 多组数据题目记得初始化期望状态计数器。 2018.03.30: 对拍当WA率很低的时候可以不要调试浪交一发说不定就AC了。 树套树当maxn,maxe数量级相差很大时,注意内外层,不要把maxn打成maxe,否则MLE不谢。 树套树维护二维平面点注意定义:小的在前还是大的在前。 特判1别写成0。 2018.03.31: cdq分治记得双关键字排序,第二关键字千万不能逆序,否则小概率WA,真的调不出来。 2018.04.01: m再次打成n,您还是退役吧。 2018.04.02: 注意字符范围是小写字母还是全部字符。(与是否需要map相关) 注意启发式合并计算二元关系时维护当前输入为前一个还是后一个还是都需要计算。 SAM新建nq的时候len[p]不要写成len[q]。 堆剪枝的时候注意特判堆没满的情况下不要进行剪枝! 只有整数的计算几何还写不对?脑补一下叉积怎么求面积什么的...... 算法关于度数的题目特判自环(此时不需要加反向边)。 maxn与maxl还能打混?常数关系直接打乘法好了...... 2018.04.03: KDTree求min直接用边界求min相加是错误的,需要扫一遍用一些奇怪的办法估价。