Loading [MathJax]/jax/output/CommonHTML/jax.js

其他-程序实现中的注意事项

姊妹文章:一些解题中的小技巧

  • long long
  • 解密对拍后上交时需加密
  • 若存在多组数据,每组数据中读入连串数据,若在读入时判无解,需要将剩下的数据读完
  • O2时不要在同一个式子里多次改变一个量
  • 记得写return
  • 在幂处取模应对p1取模
  • 找规律

搜索

  • 用了任何剪枝都不要忘记防止反向操作,否则优化再好也是渣

FFT

  • 在处理nn时要求nn>2n(因为答案两倍长度)
  • 两倍空间

高斯消元

  • 求方程时,在消完当前格后要将所有行[1,n]的全部消除,不仅限于[i,n]

  • 求行列式时,记录行交换了多少次,记得交换一次就要变号

凸包

  • n2时要特判

带修莫队

  • blk=pow(n,3/5)的话时间复杂度是有问题的,整数意义下3/5=0,块大小为1,要写成blk=pow(n,3.0/5)

主席树

  • 统计权值时记得考虑当前节点选却不全选的情况
  • 空间开爆

后缀自动机

  • 儿子数组要开到字符集大小,不要受平衡树的影响只开2
  • 总数组需要开两倍空间
  • 广义后缀自动机不能使用基数排序,需要建出 parent 树(因为广义 SAM中存在节点与 parentlongest 相同的情况,基数排序无法区分)

矩阵树

  • 外向树用入度,内向树用出度
  • 余子式需消去根的那一行

欧拉回路

  • 当前弧优化

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;}
posted @   oier_hzy  阅读(323)  评论(0编辑  收藏  举报
编辑推荐:
· 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)
点击右上角即可分享
微信分享提示