在OI中,有哪些看似致命,卻沒大礙的錯誤?


頹廢


在河南省,初賽選擇題忘了做


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/putchar

a[b]寫成b[a](a為數組名,b為單變數名)


推薦閱讀:

如何看待 NOI2016的冬令營上 出題方與選手們展開的辯論?
高一想自學參加noip及後續的noi需要用到哪些書?
如果在noip退役怎麼調整心態?
為什麼很多OIer/ACMer不使用vector而使用數組?
NOI獲得金獎/銀獎/銅獎分別需要付出多少努力?

TAG:OI | NOIP | 信息學競賽 |