犯错集合&个人缺陷&好想法

版权声明:本文为博主原创文章,转载时请标明出处。 https://blog.csdn.net/FarmerJohnOfZS/article/details/71250170

犯错集合

  1. 善用CtrlCV,加快打字速度。
  2. 认真训练,不要CB!
  3. 调试用代码要注释于旁边 比如/*调试*/
  4. 不吝啬于打注释 尤其是思路不清晰时(当然最好还是想得很清楚了再开始)
  5. 边集数组2 线段树数组4 etc.
    至少判断每个数组的空间是否够 打代码时也要考虑越界问题
    原因: C++ 本身不可能报数组越界 只知道把指针瞎指
  6. 不要随意全开 ll 平时偷个懒问题不大
  7. 比赛前一天晚上好好睡觉! 早起床,吃好早餐,别碰咖啡
  8. Ctime 中的 clock() 可以用于算运行时间 time(0) 用于 srand()
  9. (tmp)等价于 (tmp!=0) 而非 (tmp>0)
  10. 比赛里的题目顺序不要管!血淋淋的例子GDKOI2018Day1
  11. O2要求十分严格 可能导致RE 所以不必要就别开
  12. 函数不要作为循环范围(如ve[].size()) 建议记下来再用
  13. vector 可能导致空间&时间二倍 也可以通过提前reserve防止其按二进制分配空间
  14. 当题目复杂时,确立单一观察对象思考 例:各类hanoi
  15. double 不能用memset赋极值(清空海星) 看上去值没问题 比大小时会出锅
  16. struct 的 memset 需要使用 memset(&t,value,(sizeof t)或(sizeof(struct_name)));
  17. 某种情况计算多次时 记得先考虑情况数是否整除 则考虑算完总数后作除法
  18. 搜索顺序对时间影响巨大 不确定时可以对拍寻找较快顺序(反正只用改一点点)
  19. 如果搜索题目剪枝编程复杂度较高 建议先打基本版 然后去做其他题 最后当提答题玩一玩差不多了
  20. Hall定理:存在从V1到V2的完全匹配 当且仅当V1中任意k个顶点至少与V2中k个顶点是相连的
  21. __Int128的输出要判断正负数
  22. 对于大部分关于集合{x|x=f(y),y属于S}
  23. 三维问题都可以采用 枚举(排序)一维+分治一维+数据结构一维
  24. 可以认为T(动态开点)=3*T(离线离散化) 所以不要轻易作死!!!
  25. LL比INT慢一倍!!!!
  26. cmd的fc是不忽略行末空格&(\r\n)的
  27. 打表拆系数是个好方法嘤嘤嘤
  28. 如果不知道怎么做就尝试重新描述题目吧!
  29. 有时在dfn很难线性实现时 不如改成类记忆化搜索吧!
  30. 当复杂度涉及已删除点时 要考虑被删除者是否被扫描 当复杂度涉及已删除点时 要考虑被删除者是否被扫描
  31. 不要轻易推翻原有的结论 很可能是极端条件杂糅(某些极端不共存)
    况且脑子还是新鲜的好用[吓]
  32. 对拍时 请再三检查随机数据的一般性和暴力的正确性
  33. 变元矩阵树定理:
    令A[i,i]=\sum e[i][j],A[i][j]=-e[i][j];注意负号!
    删去第r行第r列(1<=r<=n) 后,det(A’)就是各个生成树的边权积的总和
  34. 求行列式的N^3做法:高斯消元(行列加减)成上三角 此时答案就是对角线上(n-1)个量的乘积
  35. 稳定的排序算法:(带序号)相同元素结果稳定 而非时间
  36. 大部分C++程序数组下标从0开始(记得因为初赛挂过&看标慢)
  37. 有这样一类题目:边权=两点点权异或/gcd/… 求最小生成树 一般可以先把一些点(如点权相等)并在一起简化题目
  38. 然后!如果需要求方案数,需要算上最开始合并那些点的方案贡献(n^(n-2))
  39. 各类DP都可以考虑打成记忆化 好用范围:冗余状态多
  40. n个点n条边是环套树!为什么我以前一直不知道[捂脸emoij]
  41. 康托展开:一个排列的排名为 \sum [a_i为左的逆序对个数]*((i-1)!)
    逆康托展开 从第一个填什么或者从最小值位置开始考虑
  42. 考前三日 辛辣是禁忌 没有为什么!!!
  43. sort区间左闭右开
  44. 简记tarjan 边双:去掉割边 再给每个联通块染色 割边(x,y)满足low[y]>dfn[x]
    点双:当dfn[x]==low[x]时 当前点为割点 所以 比它dfn大&&没有被其他割点隔开的部分都属于这个点双 具体说来 开一个栈保存当前遍历到的部分 跑完子树后判x是否为最高点 (因为手推出锅太多次所以废话嘤嘤嘤)

个人缺陷

  1. 数据结构,字符串练习少
  2. 容易开小差
  3. 脑子里汪洋大海
  4. 代码调试不熟悉 几乎没有技巧性可言
  5. 对睡眠和食物需求量极大

好想法

  1. 非递归求 dfs 序( s z i sz_i 和根已知)
考虑每个点x
{
   找重儿子s
   dfn[s]=dfn[x]+1;
   求剩下儿子dfn(和sz有关)
}
  1. 二分答案求前k大 (例3329树上的路径)

猜你喜欢

转载自blog.csdn.net/FarmerJohnOfZS/article/details/71250170