DEBUG大事记
本文最后更新于 727 天前,内容如有失效请评论区留言。

先上图片压位

运势图.png

洛谷开挂.png

让我列举下OI之路上的玄学(坑人)事件 & DEBUG重要日志:

  • 1.天下第一玄:记得做Codeves上某题的时候,交上去,输出一堆奇怪的东西,然后下载测试数据,本机测试,发现和正确答案一模一样
    • 解决方案:读入多余换行符不能使用一个$temp$读进去,而应该用$scanf$(“\n”)忽略空格
  • 2.最强卡常数:$P1979$华容道【$2013$年提高组$D2T3$】,同一份代码,每提交一次会得到不同的分数,TLE的点不相同
    • 解决方案:开O2,拼RP,多交几次(几次>10)
  • 3.在MZOJ上做某到水题的时候,发现$cin$速度明显快于$scanf$,其实这不重要,重要的是快读超时
    • 解决方案:该题数据有误,导致快读的$getchar()$卡死(其实已经可以避免了,详情见My Blog[导弹拦截]中不定项数据的快读实践
  • 4.在SPFA基础代码检测(其实只要没有负权边一定不能用SPFA,它早死掉了,我早就不会SPFA了)中,我熟练的打出Dijkstra跑正解,用teacher01交爆〇,老师说数据有误,更改测试数据后还是爆〇,DEBUG了两个多小时,我和答案的思路和写法是一样的啊
    • 解决方案:老师加强数据后题面描述有误,导致爆数组但爆的不多,故WA,浪费伤心了2个多小时
  • 5.记不清做字符串某道题的时候,在多组测试数据的时候会输出奇怪的东西(但和数组没有清空无关)
    • 解决方案:由于题目是多组数据,且该题由于特殊性质,在读入一定量数据的时候就可以判断无解,我就直接输出无解却没有读入剩下该组的数据,警惕我们以后一定要读入每一组数据
  • 6.记不清做哪到题的时候$RE$,然后下载测试数据调试时发现加边的$cnt$莫名被改成了极大值,被非法篡改
    • 解决方案:原来是数组大小打错了,导致爆数组是时不会$RE$,而是访问到连续的下一段内存(比如$cnt$),该问题在后来的题也再次遇到过(由于有前车之鉴DEBUG就会容易的多了)
  • 7.调试时发现变量被$optimize \ \ out$或者值与真实值不符,甚至在读入数据时数组里面的值被莫名更改,调试语句执行时不按照顺序执行,甚至还有编译完成后执行会$Fail$
    • 解决方案:这应该是调试时最常碰到的问题,Dev-C++ 的BUG,可以尝试重启Dev-C++,确保编译器是$32- bit\ \ Debug$,重新编译,最好的方法或者没有办法就只能静态调试眼查错
  • 8.$CF1100E$调试了我4个多小时,思路和写法都是对照者标程写的,却会在第12个点$RE$,然后我尝试代码重构,嫁接代码,拼凑代码,一直DEBUG,提交了33次,才最终确定了问题
    • 解决方案:错误原因是这行代码for(int i=0;i<=Ans.size()-1;++i)printf("%d ",Ans[i]);由于我用了宏定义,我实际写的是rep(i,0,Ans.size()-1)printf("%d ",Ans[i]);后来查阅后发现这样写是有BUG的,vector的size()函数返回的是无符号整型,当size()是0时,它-1是一个极大值,正确写法最好应该这样
for(int i=0,r=Ans.size();i<r;++i)printf("%d ",ans[i]);
  • # 重要事项与语法记录

写代码注意事项:

1.检查是否需要define int long long或者中间的传递参数是否修改成long long
2.检查数组大小
3.检查所有的输出操作(printf, puts, putchar),是否有debug记号未删除
4.检查文件名, 打开文件输出的freopen
5.编译并运行程序, cmd命令fc比较
6.确认标签页上无星号(*)后复制到提交目录下

全局变量初值为0

fread

exit(0)

括号赋值,如ans(0)

__int128

typedef long long ll / define ll long long

string 用法

字符串vector -> char -> string

字符串的在vector -> string,string初值?? 用了string就必须cin, cout, 所以

sscanf 与 sprintf

map<string, int> 中的string可以使用char数组代替不会CE, 但是否正确呢?

char数组反复使用,则调用map中的a[s]是不是’\0’前的字符串

string 运算符,string重复使用会以’\0’结尾吗?

getline(cin, s) ,不读入回车符

string.begin() 与 0

string会把读入字符串后的空格

‘\n’与’\r\n’,要么本机跑不过,要么评测机跑不过…

cin char不会读入换行和空格, scanf char会读入换行和空格

int &F = f[i][j][k] 变换F的指向

动态分配高维数组??f[a][b][c] a + b + c <= 1000

vector.resize()

结构体嵌套语初值问题

栈空间和内存是否同步,例如ybt1758:连通能力

ios::sync_with_stdio(0), cin.tie(0), cout.tie(0) ??

int接收long long和long long接收int

函数名称可以相同,只要接收类型不同即可?

scanf(“(%d)”, &x) //scanf格式化读入时如果没有读入期望字符会怎样,神奇的错误

multiset一边遍历一边删除

getline, bitset(全部赋值为0/1)的用法

排序时的< 和<=, 以及某些奇怪的错误,如题:ZROJ#954. 【十连测 Day 1】分组

全局变量a[N] 与 局部变量 a

连接器默认加入的语句,而正式编译没有?

bitset用法

(edge){v, w, head[from]}

void splay(int cur, int root = 0)

this -> init()

set迭代器指针过期问题

unsigned long long 如何 I/O -> %llu

函数中开数组是否步会爆栈?

一首好诗:
西江月·证明
即得易见平凡,仿照上例显然。
留作习题答案略,读者自证不难。
反之亦然同理,推论自然成立,略去过程QED,由上可知证毕。

评论

  1. Windows Chrome 98.0.4758.102
    2年前
    2022-3-07 17:19:53

    测试评论
    {{doge}}

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇