打FFT時中發現的卡常技巧

2022-08-13 10:06:16 字數 879 閱讀 4099

題目:洛谷p1919 a*b problem 加強版

1.加register

這個不必多說了吧,卡常基本操作之一,但是貌似加多了也會慢

2.運算子過載時加上取位址符

本來是這樣:

class cp

;} cp operator-(const cp aa)

;}cp operator*(const cp aa)

;}};

改成了這樣:

class cp

;} cp operator-(const cp& aa)

;}cp operator*(const cp& aa)

;}};

原因未知,但快了不少。

3.不要過載等號

如果你寫了這樣的函式:

cp& operator=(const cp& aa)

return *this}

除非你用等號幹一些特殊的事,否則去掉吧。編譯器會自動過載等號,而且絕對要更快。

4.去掉多餘的建構函式

一開始我是這麼寫的:

class cp

cp operator+(const cp aa)const

//......

};//in fft()

cp wn(cos(pi/i),f*sin(pi/i));

改成了這樣後:

class cp

;} //......

};//in fft()

cp wn=(cp);

就變快了,看來建構函式耗時還是很大的,尤其是當你要設一組變數的時候。

程式設計比賽中發現的問題

今天學校舉行程式設計比賽,我用的是c語言,在比賽的過程中我犯了乙個以前沒有注意到的錯誤 型別轉換。錯誤 如下 float a scanf lf a printf f a 當輸入1的時候,輸出結果為0.000000。改成下面這樣 double a scanf f a printf lf a 輸入為1的...

微信中 發現 介面的實現

看 這是由混合cell實現的,所以有兩個cell。裡面分別是 在controller中 如下 import discoverviewcontroller.h import discovertableviewcell.h import discover2tableviewcell.h inte ce ...

2019 08 04 路在實踐中發現

08 23 在孩子幾聲 婆婆 中朦朧睜開了眼睛。看著光亮的窗簾有時候心裡會嘀咕著現在到底幾點呢。8點?9點?10點?還是已經12點了?單看光亮的程度是無法準確預估的,還要結合一下周圍環境的動向才能大概給自己乙個判斷。例如孩子在幹嘛,父母都在忙到哪個節奏了,他們都聊些什麼東西,鄰居或戶外的互動噪音有哪...