在OI中,有哪些看似致命,卻沒大礙的錯誤?
01-08
頹廢
在河南省,初賽選擇題忘了做
emmmm,這個問題我在NOIP2017裡面深有體會,就是快讀在判斷負數的時候,考場上一時疏忽少寫了F=-1;導致了屏幕輸入的時候出現死循環,一旦讀入非數字字元而進入第一個循環,就會造成死循環。
但是奇怪的是在考場上使用起來沒有任何問題,考試結束之後,在洛谷上測評之後發現全部RE,發現原來是少寫了F=-1;
當時很難受,但後來發現少了一句F=-1之後,每次先讀入數字,然後讀入一個字元,再讀入一個數字,讀入字元……這樣剛好不會因為讀入多餘的東西而造成死循環而RE,每次是讀入數字,再讀空格然後在讀數字,直到遇到換行符。在文件輸入輸出測評的時候,也拿到了預想的分數。
可以說是看起來很致命,但是並沒有什麼大礙。(只適用於文件輸入輸出且數據沒有負數)這是個十分玄學的事。
在NOIP2017D1T3中,我的tarjan演算法是這樣寫的。
int tarjan(int p,int fa)
{
int lowp;
...;
//此處應有 return lowp;
}
然而考試的時候沒有發生任何問題= =。
結果我考完之後想起這件事,心想完了完了,這種錯誤一掛就是100分。我甚至開始懷疑大樣例的數據濕度。
後來發現在用noilinux的4.8.2版本g++編譯時,我這個函數會返回正確的lowp值。
震驚O_O。
noip2017 d2t1沒開 ull
d1t2掛在奇怪的地方,自測30,50,70,100等,其實大多數都能過...
main沒有寫return 0;關閉流同步後使用printf/puts/putchara[b]寫成b[a](a為數組名,b為單變數名)
推薦閱讀:
※如何看待 NOI2016的冬令營上 出題方與選手們展開的辯論?
※高一想自學參加noip及後續的noi需要用到哪些書?
※如果在noip退役怎麼調整心態?
※為什麼很多OIer/ACMer不使用vector而使用數組?
※NOI獲得金獎/銀獎/銅獎分別需要付出多少努力?