所謂的“常數”其實是對於時間複雜度而言的。眾所周知,要計算一個演算法的時間複雜度,都會想想將某變數設定為無窮大,那麼最後會得出一個什麼式子。就拿一個函式來做一個簡單的例子好了。 那麼如果我們把x設為無窮大,那麼我們可以看到,那個 會變得異常之大,以至於剩下的 都可以省略,那麼最後計算出來,時間複雜度就是 。剩下的 ,就是常數咯。那麼這麼看來,對於常數,其實你如果有耐心,有毅力,是可以計算出來的,具體可以詳見《演算法導論》的前3章,那裡有非常詳細的解析。接下來加深一下大家的印象凡是學到提高的應該都知道幾種資料結構吧:如線段樹,st表之類的。線段樹的查詢,時間複雜度是 ,而st表的時間複雜度是 。這樣看起來st表要比線段樹厲害很多,但事實是這樣的嗎?其實並不是。眾所周知,st表在之前有著 的預處理,這樣一看其實與線段樹差不了多少了,這就是所謂的“常數”吧。當然對於常數,大家可能有另外一種理解:真實經歷,我的一個同學在做另一個毒瘤同學出的題,結果90,因為用了vector。將vector換成陣列後,立馬就滿分了。各位也應該有把cin改成scanf甚至快讀拿分的經歷吧。那麼這個常數你就無法算出來了,因為這是這個語言內部的屬性。除非你是c++之父,不然,有那個人能具體說出cin和scanf的區別?為什麼scanf比cin快?我相信有時間煩這些的都不會來學OI,不學OI的也不用管這麼一點點時間吧。。。作為學OI的,你只需要知道,什麼比什麼快這一事實不就好了嘛!
所謂的“常數”其實是對於時間複雜度而言的。眾所周知,要計算一個演算法的時間複雜度,都會想想將某變數設定為無窮大,那麼最後會得出一個什麼式子。就拿一個函式來做一個簡單的例子好了。 那麼如果我們把x設為無窮大,那麼我們可以看到,那個 會變得異常之大,以至於剩下的 都可以省略,那麼最後計算出來,時間複雜度就是 。剩下的 ,就是常數咯。那麼這麼看來,對於常數,其實你如果有耐心,有毅力,是可以計算出來的,具體可以詳見《演算法導論》的前3章,那裡有非常詳細的解析。接下來加深一下大家的印象凡是學到提高的應該都知道幾種資料結構吧:如線段樹,st表之類的。線段樹的查詢,時間複雜度是 ,而st表的時間複雜度是 。這樣看起來st表要比線段樹厲害很多,但事實是這樣的嗎?其實並不是。眾所周知,st表在之前有著 的預處理,這樣一看其實與線段樹差不了多少了,這就是所謂的“常數”吧。當然對於常數,大家可能有另外一種理解:真實經歷,我的一個同學在做另一個毒瘤同學出的題,結果90,因為用了vector。將vector換成陣列後,立馬就滿分了。各位也應該有把cin改成scanf甚至快讀拿分的經歷吧。那麼這個常數你就無法算出來了,因為這是這個語言內部的屬性。除非你是c++之父,不然,有那個人能具體說出cin和scanf的區別?為什麼scanf比cin快?我相信有時間煩這些的都不會來學OI,不學OI的也不用管這麼一點點時間吧。。。作為學OI的,你只需要知道,什麼比什麼快這一事實不就好了嘛!