原帖出自 nefelibata,不過他不想維護,所以就交給 stardust 了awa。申請置頂!nefelibata:因為筆者弱到無法形容,因此沒有辦法寫出什麼有意義的題解,所以本章的主要目的就是為了記錄下筆者自己犯過的垃圾錯誤同時幫助和我一樣的初學者(如果能幫到的話),減少因低階錯誤而浪費時間。(這當中的一部分可能您認為毫無意義,但都是筆者犯過或者除錯了很久的)如果有大巨佬無意之中看見了本篇 blog,請留下自己在學習 oi 中的一些錯誤吧,這真的會對筆者這樣的蒟蒻起到很大的借鑑意義。
stardust:這篇 blog 講真還挺有用的。每次考前考中回想一下自己整理過的一些錯誤能避免很多不應該的掛分。另外,這顯然屬於一篇互動帖,大家在帖上的回覆如果看到了會陸續整理哦!祝考試不再無意義掛分!nefelibata 回歸 whk 了……祝好!
由於原帖主牆裂申請,從 2021.4.17 在帖末新開放 xsc062 的流芳百世遺臭萬年系列。(霧
update 2021.8.19:lihan 自願加入了流芳百世遺臭萬年系列!
可能有些渲染 oj 上無法實現,可以考慮移步至 link。
c20230152luojuntong:
xsc062:
nefelibata:
c2024xsc001:
(包括stl
之類的啦。
c20212104:
nefelibata:
c20230152luojuntong:
如果您的程式在某些測試點卡住了,請檢查您sort
的cmp
函式有沒有問題(一般來說是等號的問題)
stardust:
ybwlx:
c202207xiaofang:
c20230152luojuntong:
這個東西是先判斷 \(a\) 再判斷 \(b\) 的,所以,如果有乙個條件是防止另乙個條件 re 的(比如!s.empty() && s.top()=='('
)注意讓判斷是否會 re 的那個條件放在前面。
kidulthood:
c20204518:
cqbz:
susct:
lihan:
解決方案:
1.在 \(4\) 倍空間的基礎上再開大 \(2\) 倍
2.判斷 \(r < l\)。
xsc062:
hatakekakashi:
wicton:
stardust:
lihan:
nutmeg:
fool_fish:
hatakekakashi:
cqbz:
nefelibata:
ybc202211yangjinxi1:
c20230152luojuntong:
tianwen:
c2024xsc001:
c2025xuyuetan:
walking_dead:
nefelibata:
xsc062:
stardust:
ybwlx:
c202201yuruilin:
susct:
fool_fish:
kid_magic:
stardust:
c20230154wangweihan:
nutmeg:
x6wangxiye:
lihan:
reanap:
flower_dream:
cqbz:
walking_dead:
c20204429
xsc062:
c20230239zhangfuxiang
kidulthood:
ybc202312xiebohao:
c2022dongjie:
c20230152luojuntong:
susct:
nefelibata:
c20231111jiangjunhong:
c202201chenjiage:
多圖警告。不需要檢視此系列的請直接跳過。在函式傳參時,如果要傳乙個巨大的結構體(比如結構體裡套乙個 \(100 \times 100\) 的陣列之類的),**上引用,否則在
c++ 17 (clang)
或c++ 11 (clang)
上會 ce(沒錯,不是 tle,是 ce)
鏈式前向星連續改了三次手殘打錯了三次我也是醉了。在做圖論題 debug 時如果遇到了奇奇怪怪的遍歷順序就可以查鏈式前向星哦 awa。
比如你有一道題,它 re 了。
然後你把陣列開大了十倍它還是 re。
記得檢查一下它是不是檔案輸入輸出。
void toposort(something)
return;
}int main()
然後這個laoer
就改這個改了一下午。
(主要是各位仔細看,因為分別用鄰接表和鏈式前向星存了兩張圖,這**不會 ce,並且過了樣例,很神奇地不會 re)
請注意題目是否需要無限輸入 (洛谷的資料也太水了。
如果需要複製某些圖論板子。
檢查一下題目要求存邊是單向還是雙向。
然後你的板子是單向還是雙向。
我,一道題,陣列開小了,在不同的大資料(頂滿資料範圍造的資料)中同時取得了 ac、wa、re、mle(?)、tle 的好成績。
也就是說,如果你 mle 了,請檢查你是否 re。(這也太草了吧
請注意因預設建構函式所帶來的mle
。
請注意因建構函式所造成的mle
帶來的wa
。(?)
道理我都懂,but 為毛不管多不多組,資料範圍大不大,圖密不密,開不開 o2,鄰接表都比鏈式前向星快啊!(悲)
欸不對我好像是鄰接表黨來著?那沒事了,用個 p 的鏈式前向星。
如果你的全域性陣列(預設全部為 \(0\) )中,還沒有賦值的元素突然莫名其妙有了乙個奇怪的值。。。
不妨檢查一下你的陣列是不是開小了 /dk
有時候這個值很特殊,剛好和你程式中某個變數的值相同,那是因為分配給你程式的記憶體是連續的,然後就剛好從陣列越界到那個值去了。。。
注意區分你的計算範圍是數的下標還是數的值域(文明人
咕了很久的 每日乙個遺臭萬年小技巧:
inline int sum(int k)
請注意迴圈變數的初值。
樹形dp
時不要只顧著想怎麼轉移狀態而忘了加dfs(v,u)
。
from trymyedge & nutmeg
.
我可能是唯一乙個今天才知道 負數整除 \(2\) 的時候是向 \(0\) 取整而非向下取整 的人
所以強烈建議使用>> 1
而不是/ 2
我想了半天,為什麼我的t4
暴力分沒拿啊,我好像寫了來著?難不成寫掛了?
賽後 6h 發現自己的資料夾裡多出來了乙個檔案,一看,原來我t4
的cpp
名下意識地起成了題目中文名啊,檢查**的時候以為自己沒打,所以就少拿了 \(20\) 分哦。
0.01 * 3 = 0.029999999...
今天因為這個我 wa 了 \(1e9 + 7\) 次。
單調佇列幾個月沒打了導致日常智障白丟 40pts。
帶字首和的單調佇列優化 dp 要先push_back(0)
。
假如說你有一排東西,你知道其中兩個東西離排頭那個隔了多少個東西。然後你需要求出這兩個東西中間隔了多少個東西。
正常人都知道這個值是兩個已知數取差之後要 \(-1\) 的,但是……如果這兩個東西的前後位置不知道,就需要取絕對值。\(-1\) 需要寫在絕對值的外面。
然而double
強轉int
是向 \(0\) 捨入而不是向下。
所以有負數且希望向下取整時應使用floor()
。
即使一道圖論題目沒有告訴您任何限制條件,也請務必注意資料可能會出現重邊和自環。
我這次發言很好地控制了自己的用語,大家快來誇獎我。
講文明樹新風,文明用語禮貌待人,從你我做起。
1 << 32ll
眾所周知是long long
型別。 /wx
其實筆者一開始也沒懂,後面經由 lihan 大佬提醒才反應過來。
比較:1 << 32ll
、1ll << 32
每日乙個遺臭萬年小技巧:
一些較短的函式(如min
,abs
,cmp
)等,只寫返回值,不寫return
。
如:
int find(int x) //並查集
bool operator
新手易犯錯誤集
include include define exp 0.00000001 int main else else if disc 0.0 else return 0 今天在寫這個 的時候犯了很多錯誤決定把它記下來,以後就不會犯了,1 今天寫的時候在else後面還加了小括號寫了判斷語句,後來經查得知。...
PHP易犯錯誤集錦
1 布林值問題 以下情況的值均為false 布林值 false 本身 整型值 0 零 浮點型值 0.0 零 空字串,以及字串 0 不包括任何元素的陣列 特殊型別 null 包括尚未賦值的變數 字串false var dump bool false bool true 型別自動轉換問題 字串all會轉...
程式裡一些易犯錯誤
寫程式時經常會遇見些莫名其妙的錯誤,往往花了大把時間找了很久的bug,最終發現這些都是很小很小的問題,所以把這些可能問題記下來備忘。struct sdata sdata pmem sdata malloc 1024 pmem pdata char pmem sizeof sdata pmem len...