首页 > 其他分享 >警钟撅烂

警钟撅烂

时间:2024-02-27 19:27:27浏览次数:17  
标签:函数 res bound long 警钟 数组 时候

  1. 慎用 memset 初始化。

  2. 数组空间要开够,用多个宏定义数组空间时,要分清楚是哪个常量

  3. 图不连通时求所有强连通分量 tarjan 的时候应该写 for(int i = 1; i <= n; i++){if(!dfn[i]) tarjan(i);},不是tarjan(1)

  4. 多组数据数组要清空

  5. maxmin 函数只能有两个参数。

  6. next_permutation 里最好不用结构体,否则没写好可能会漏情况。

  7. 函数内部的变量和全局变量不要重名

  8. 注意 long longunsigned long long空间限制以及符号限制

  9. 注意一些程序的大常数。(补:尤其注意 STL

  10. 多次求高精度的时候里面的数组要清空。

  11. 不要用 dij 求最长路

  12. memset 里面不要再填 sizeof(0)

  13. 结构体排序的时候看清楚 cmp 里面填的应该是结构体的哪个参数。

  14. 二分某个数字出现的区间的时候,结尾点是 upper_bound(a + 1, a + n + 1, x) - a - 1,不是 upper_bound(a + 1, a + n + 1, x) - a

  15. 线段树带乘法操作时,加法标记也要乘上 \(val\),同理下放标记的时候也应该先将子节点加法标记乘上自己的乘法标记再加自己的加法标记。

  16. 改代码的时候如果有相同程序,记得一起改掉

  17. I/O 数据较大时,一定要用 \n 而非 endl

  18. 离散化时要写 lower_bound(t + 1, t + k, a[i]) - t 而非 lower_bound(t + 1, t + n + 1, a[i]) - t

  19. 使用树状数组时不能出现下标为 \(0\)。

  20. 树状数组进行覆盖式的单点修改操作时,可以利用原数组记录每次修改后的结果,利用这个数组进行修改操作。

  21. 线段树要开**至少四倍空间。

  22. 没有给出严格值域限制,同时还要运用权值数据结构,最好先进行离散化

  23. 读入图的时候分清楚点数和边数

  24. ST 表先枚举第二维再枚举区间起点。

  25. 建树的时候要建双向边

  26. Lca 最后返回的是 fa[x][0],不是 x

  27. 如果要排序,把信息处理放在排序之后

  28. 搜索必剪枝

  29. 高斯消元的时候要在交换之后在判断系数是否为 \(0\)。

  30. 化简的时候不要把符号抄错

  31. 高斯消元的时候所有的数据类型都要设成 double 而非 int

  32. 把调试的输出删干净了再提交

  33. 用试除法的时候(包括但不限于筛法,判素数等)一定要以 i=2 为起始

  34. 求欧拉函数时应该是 res = res * (i - 1) / i; 而非 res *= (i - 1) / i;。因为复合运算符优先级要低于除法运算。

  35. tarjan 时候把元素弹出栈时,一定要把 ins[i] 置为 \(0\)

  36. 有初始化函数一定要记得运行初始化。

  37. 注意取模的各种细节。

  38. 不要把堆和平衡树混为一谈。

  39. dijkstra 时要把边权放在 pair第一维。

  40. 矩阵乘法不满足交换律

  41. 求矩阵快速幂时,res 只将主对角线上的元素设为 \(1\)。

  42. 注意 Trie 的空间消耗。

  43. 考试中开 O2 的情况下,如果出现没有返回值的非 void 函数会炸

  44. 看好数据范围后再做题!

  45. 矩阵乘法要注意初始化。

  46. 有重边、有自环的图不能有邻接矩阵存。

  47. 分块不要忘了ed[sq] = n;

  48. 注意 c++14 的各种关键字和系统函数。

  49. FHQ-Treap 分裂完后记得合并回去。

标签:函数,res,bound,long,警钟,数组,时候
From: https://www.cnblogs.com/dzbblog/p/18037611

相关文章

  • 警钟撅烂
    警钟长鸣矩阵乘法不满足交换律!!!!(即:$ab\neqba$)线段树建树、修改时用的$mid$千万不能用宏变量。线段树中longlongmid=(tr[id].l+tr[id].r)>>1;千万不可以写成longlongmid=(l+r)>>1(除非是在建树的时候)。memset语句中$128$为最大值,$127$为最小值,$-1$为$-1$......
  • 警钟挨撅合辑
    慎用1e9可能会有不幸不开longlong见祖宗(乱开longlong也见)慎用define取余题(数据贼大):先计算,取余完了直接赋回去 t[id].cheng=(t[id].cheng*k2)%m; //t[id].cheng*=k2%m会爆炸将询问区间当成作用对象数据类型,调函数时要对应!!!不初始化见祖宗(尤其dp、比大小......
  • 警钟敲烂
    做题常见错误亿些神奇的错误警钟敲烂关于链式前向星用了链式前向星的题的最后几个点TLE/MLE/RE等等非常神奇的错误,一般都是链式前向星数组开小了!有多个图时最好吧Edge封装成Graph结构体structGraph{structEdge{intfrom,to,pre;intw;......
  • 【警钟撅烂】不知道第几个
    网络流建立虚拟源点汇点编号分别为0,n+1然后初始化的时候从1到n....调题调了两个小时啊哈哈,被自己,蠢笑啦~#include<bits/stdc++.h>usingnamespacestd;constintN=605;constintM=2505;constintINF=(int)0x3f3f3f3f;intedgeid=1;inthead[N];structedg......
  • 【警钟撅烂】6
    写二分图匹配匈牙利板子洛谷3386WA#2百思不得其解翻看讨论区并ctrlf发现同样情况的帖子发现原因是函数内循环遍历的是左侧点有如下感受1.wssb2.洛谷的数据怎么这么水以上,警示后人附WA代码#include<bits/stdc++.h>usingnamespacestd;constintN=505;con......
  • 【警钟撅烂】1
    警示后人定义结构体之后记得加分号!!!事件事故概述2024年1月1日17点52分记某人尝试速通Febonacci矩阵加速递推定义结构体后没加分号导致CE若至错误调试耗时15分钟PS:加上分号后无编译AC,当事人非常开心以上,引以为戒(附CE代码)#include<bits/stdc++.h>usingnamespacestd;......
  • 【警钟撅烂】3
    正在完成线性基板子题始终WA#2#3#4#5百思不得其解遂撅洛谷讨论区,得前人警示:位运算记得打括号补上括号,遂AC以上,警钟长鸣附WA代码#include<bits/stdc++.h>usingnamespacestd;#definellunsignedlonglonglld[100];intn;voidInsert(llx){ for(inti=62;i......
  • 【警钟撅烂】5
    2024年1月24日15点49分正在完成高斯消元板子题ALL#WA翻出董晓逐行比对一眼丁真遂发现判断无解时括号打歪了if(fabs(a[i][i]<eps))蒸乌鱼解决此问题耗时20min以上,警示后人附WA代码#include<bits/stdc++.h>usingnamespacestd;constdoubleeps=0.000001;const......
  • 警钟敲烂
    以下是作者考场上遇到过的挂分的原因:空间开小,空间开大直接MLE。忘记判无解。忘开longlong。本地与评测机的环境不同导致的错误,包括:sizet的返回值是long,这东西在32位机上是int,在64位机上是longlong,因此如果出现在max/min中一定要强转类型,不然很有可能C......
  • 千里之堤溃于蚁穴,质量问题警钟长鸣
    千里之堤溃于蚁穴,质量问题警钟长鸣是能用就行,还是精益求精?水文一篇,一点点小感慨。事情缘由如下:缘起早上来,打开代码就看到了一个提交。改动上没啥问题,不过用到了ES2015的新语法,老旧浏览器上语法不识别,会直接导致整个文件挂掉,马上通知了开发立即修复。之所以对这个问题这......