一般acm或者筆試題的時間限制是1秒或2秒。
在這種情況下,c++**中的操作次數控制在 107
為最佳。
下面給出在不同資料範圍下,**的時間複雜度和演算法該如何選擇:
n≤30
, 指數級別, dfs+剪枝,狀態壓縮dp
n≤100
=> o(n3)
,floyd,dp
n≤1000
=> o(n2),o(n2logn)
,dp,二分
n≤10000
=> o(n∗n√)
,塊狀鍊錶
n≤100000
=> o(nlogn)
=> 各種sort,線段樹、樹狀陣列、set/map、heap、dijkstra+heap、spfa、求凸包、求半平面交、二分
n≤1000000
=> o(n), 以及常數較小的 o(nlogn) 演算法 => hash、雙指標掃瞄、kmp、ac自動機,常數比較小的 o(nlogn)
的做法:sort、樹狀陣列、heap、dijkstra、spfa
n≤10000000
=> o(n)
,雙指標掃瞄、kmp、ac自動機、線性篩素數
n≤109
=> o(n√)
,判斷質數
n≤1018
=> o(logn),最大公約數
大佬的難題
給n個三維座標點,滿足每維座標都是1 n的排列,求三維偏序。注意到任意兩個位置,都有乙個位置有至少兩維比另乙個位置的對應兩維大,於是可以容斥,那麼只需要做二維偏序。include include define fo i,a,b for i a i b i using namespace std ty...
大佬的難題
大意 給你 3 個長度為 n 的排列 求 a x a y b x b y c x c y n 10 5 1 x,y n 題解 直接容斥,設sx,y表示滿足上述式子的數量 答案即為sx,y 3 容易發現sx,y只能取2,3 設pa,b 為a,b兩個陣列滿足 ax 然後顯然pa,b pb,c pa,c ...
如何區分真大佬和偽大佬
中國大概99 的都是偽大佬吧,偽大佬自稱神,自稱巨佬,自稱遠古巨神等等,但是說句實話,大部分恐怕都沒接觸過大佬圈。要區分很簡單 偽大佬很喜歡自我抬高,每天到處寫部落格發自己的東西,顯示自己實力高強 真大佬最怕自我抬高,因為到處來一幫想白嫖的 偽大佬閒,閒的體現就是大量的時間做宣傳自己的事情 真大佬你...