debug提示

简介: debug提示

2023.5.26

  • codeforces.com/contest/183…
  • 如图,当把所有的逻辑都做完之后,错在了在线上,直接return了,G
  • 一定要有良好的逻辑分支,做到一丝不苟!
  • 当出现bug时,只有两种情况,要么是别人错了,要么是我的代码某个地方错了,这个地方,一定可能是任何地方!

2023.4.27

2023.4.25

  • codeforces.com/contest/182…
  • 卡常教训:把所有的内存占用都移出栈区,数据量很大的时候,在栈区里面开空间非常耗费时间!
  • 尽量少使用vector当成数组!!!
  • 卡常很极限可以用map和set等stl在特殊的地方优化

2023.4.2

  • 还是数学有关的
  • 会超出LL,需要做一些特殊处理
  • 如图,sqrt在对64位整数运算时会产生极大的误差,必须再手动校准(sqrtl也没有好到哪里去)
  • 找到第一个小于等于mmm开平方数字

scss

复制代码

int limit = sqrtl(m);
    while((limit - 1)*(limit - 1) >= m)
        limit--;
    while ((limit + 1) * (limit + 1) < m)
        limit++;
  • 找到第一个大于等于mmm开平方数字

scss

复制代码

LL x = sqrtl(m);
    for(;x*x>m;x--){}
    for(;x*x<=m;x++){}
  • 还有很重要的一点,cout会自动把double转为科学计数法,这必须要注意!!!

2023.3.24

  • 炸裂的精度ceil,long long类型数字开平方sqrt有非常多的精度损失
  • 导致ceil的准确率非常低
  • 所以开平方禁止使用sqrt,尤其是在此情况下

debug2(ceil(2 + eps),2+eps)double只有8字节,相当于只能存储20位整数,包括小数和整数部分的位数和,所以这样后的表达式double类型为2,精度损失 输出为ceil(2 + eps) = 2  2+eps = 2

2023.3.11

  • 不要使用INT_MAX等宏定义做变量,很容易产生越界
  • lower_bound和upper_bound都会在set.end()越界,必须特判
  • 分类讨论太多的时候必须非常细致
  • 边界问题,尽量不要用特殊值替代(除非很熟练),做到能用自然语言描述就好
  • codeforces.com/contest/180…

2023.2.27

  • debug就是逐步缩小范围,甚至是一句一句调试

2023.2.14

2023.1.30

2023.1.19

  • ac.nowcoder.com/acm/contest…
  • 问题:当T测试样例数量较大时,尽量不要使用memset,耗时非常严重
  • 解决办法:修改一些特殊点,或者优化代码往其他方向


相关文章
|
5天前
|
程序员
调试程序DEBUG的使用
调试程序DEBUG的使用
9 0
|
8月前
|
存储 C++
神秘的 _DEBUG 宏从何处来?
神秘的 _DEBUG 宏从何处来?
|
11月前
解决 Adb debug error
解决 Adb debug error
119 0
|
12月前
断点调试(debug)
断点调试(debug)
10905 0
|
JSON 编译器 Go
VS CODE一些常见配置操作(快捷键设置、C/C++的debug、代码路径配置)
VS CODE一些常见配置操作(快捷键设置、C/C++的debug、代码路径配置)
559 1
VS CODE一些常见配置操作(快捷键设置、C/C++的debug、代码路径配置)
|
算法
写代码一天,debug一年?
写代码一天,debug一年?
175 0
写代码一天,debug一年?
|
网络协议
|
网络协议
|
网络安全 Ruby