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

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

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

搜索

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

FFT

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

高斯消元

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

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

凸包

  • \(n\leq 2\)时要特判

带修莫队

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

主席树

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

后缀自动机

  • 儿子数组要开到字符集大小,不要受平衡树的影响只开\(2\)
  • 总数组需要开两倍空间
  • 广义后缀自动机不能使用基数排序,需要建出 \(parent\) 树(因为广义 \(\mathrm{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;}

转载于:https://www.cnblogs.com/penth/p/9746544.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值