其他-程序实现中的注意事项
姊妹文章:一些解题中的小技巧
- 开long long
- 解密对拍后上交时需加密
- 若存在多组数据,每组数据中读入连串数据,若在读入时判无解,需要将剩下的数据读完
- 开O2时不要在同一个式子里多次改变一个量
- 记得写return
- 在幂处取模应对p−1取模
- 找规律
搜索
- 用了任何剪枝都不要忘记防止反向操作,否则优化再好也是渣
FFT
- 在处理nn时要求nn>2n(因为答案两倍长度)
- 两倍空间
高斯消元
-
求方程时,在消完当前格后要将所有行[1,n]的全部消除,不仅限于[i,n]
-
求行列式时,记录行交换了多少次,记得交换一次就要变号
凸包
- n≤2时要特判
带修莫队
- blk=pow(n,3/5)的话时间复杂度是有问题的,整数意义下3/5=0,块大小为1,要写成blk=pow(n,3.0/5)
主席树
- 统计权值时记得考虑当前节点选却不全选的情况
- 空间开爆
后缀自动机
- 儿子数组要开到字符集大小,不要受平衡树的影响只开2
- 总数组需要开两倍空间
- 广义后缀自动机不能使用基数排序,需要建出 parent 树(因为广义 SAM中存在节点与 parent 的 longest 相同的情况,基数排序无法区分)
矩阵树
- 外向树用入度,内向树用出度
- 余子式需消去根的那一行
欧拉回路
- 当前弧优化
set
- 在将struct结构体放入set的时候,重载 < 号需要严格区分两个相同物品,否则会导致元素缺失,或使用multiset
LCT
- 在每次进行查询
find
操作时,要注意边下放标记边寻找,最后需要splay一下,否则可能被卡 - 在cut操作时,为了保证删除的边存在,可以加一个判断
ch[y][0] and !ch[x][1]
,后者可以保证删除为边而非链
int find(int x){access(x), splay(x), down(x); while(L) x = L, down(x); return x;}
void cut(int x,int y){split(x,y); if(ch[y][0] and !ch[x][1]) fa[x] = ch[y][0] = 0;}
分类:
2-笔记
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)