笔记(10/27前完成)

倍增求LCA,快速幂,树状数组,ST表,并查集,对拍,kmp,滑动窗口(单调队列),空间计算,单调栈,逆元,freopen,scanf,最短路,dfs,bfs,素数筛,排列数组合数,二维前缀和

一.倍增求LCA
用处:求树上两点距离 dis(u,v)=dep[u]+dep[v]-2*dep[lca(u,v)]
易错点:1.每个点的深度决定->2^x 2.dep[a]>dep[b]->len=dep[a]=dep[b]
预估完成时间:5min 实际完成时间:7min(有bug,查虫花费时间过多。记忆不清晰)
时间复杂度:查找O(nlogn) 预处理O(nlogn)

二.快速幂
用处:快速求幂次
易错点:1.long long 2.是if(v&1)而不是((v>>1)&1)
预估完成时间:2min 实际完成时间:3min (有bug,无法一遍过关)
时间复杂度 O(log b)

三.树状数组
用处:区间修改单点查询,单点查询区间修改(维护前缀)
易错点:1.往add和ans传入参数的时候不要传反了 2.前缀类往往开 long long 3.函数返回值是void 还是int 要弄清楚
预估完成时间:3min 实际完成时间:树状数组1 5min(debug传参)
时间复杂度:修改O(log n) 前缀加O(log n)

四.ST表
用处:预处理可以重叠但不能使用前缀解决的区间问题。典型的有最大值最小值gcd
易错点:len=log2(r-l+1)
时间复杂度:预处理O(nlogn) 单词求取O(logn)

五.并查集
用处:高效维护若干个不相交集合,支持“合并两个集合”和“查询两个元素是否在同一集合”
时间复杂度:预处理O(n),单词查询趋近O(1)

六.对拍
用处:防止出现与预期不符和且比预期低的得分
完成要点:1.一个一定会正确的暴力(为了这个点可以把第一题的暴力打一打,遵从拿分制)2.一个不一定正确的你认为的正解 3.数据生成器 4.对拍器

七.单调队列
用处:维护固定长度区间最小/大数值
完成要点:一定一定要加!dq.empty()

八.快速读入
用处:在n=1e7的情况下保证不会输入超时
完成要点:%d %lld %llu %c %c不加& %lf

九.freopen
完成要点:别写错。记得检查

十.空间复杂度计算
完成要点:MB就10241024 然后再除以(你开的数组的大小*x)int x=4 long long/double x=8 其他是1

十一.单调栈

posted @ 2026-10-28 23:08  Baltic  阅读(1)  评论(0)    收藏  举报