<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      OI程序常見的設計陷阱

      宏定義的問題

      有時候為了方便,我會大量使用宏定義。但是最近我發現下面這兩個宏定義老是出問題:

      1 #define SET(x,a) memset(x,a,sizeof(x))
      2 inline void work(){
      3     SET(head,0),SET(vis,0),SET(dis,0x3f);
      4     //do something
      5 }

      這個宏定義似乎在初始化的時候會莫名奇妙地出現一些問題。

      另外,還有這個:

      1 #define RP(i,a,b) for(register int i=a; i<=b; i++)
      2 inline void work(){
      3     vector<int> ver;
      4     //do something
      5     RP(i,0,ver.size()-1){
      6         //do something
      7     }
      8 }

      當你定義了一個 RP 的循環宏時,它的判斷會出一些問題。比如說在上面這個例子,如果ver.size()==0,那么正常的for就不會進入這個循環。但是宏定義之后它的判斷順序似乎發生了改變。

      很奇怪吧?因此,有些宏還是不要亂用。

      另外,宏和函數不同。它相當于是讓編譯器對源碼進行自動替換,而宏的語法如果不加注意,則會出錯。舉個例子,如果你想把二維坐標映射到一個整數,用宏ID(a,b) = a * M + b 來實現,那么這個語法肯定有問題。假設坐標從0開始,你想得到右下角ID(M - 1, M - 1),那這個宏會把它變成M - 1 * M - M - 1 = -M - 1。正確的語法應該為ID(a,b) = (a) * M + (b)。

      不要亂卡常

      網上有一些奇奇怪怪的卡常方式,比如說把i++寫成i=-~i,或者用大量的逗號鏈接若干個語句。對于前者,這個二進制優化其實并不如想象中的那么出色,對速度的提升不明顯。(雖然我本人也喜歡把i++寫成++i以提高速度)對于后者,雖然逗號運算符在一定程度上可以提高效率,但有些時候會出現一些奇怪的問題。我記得很久以前,我喜歡把很多語句用若干個逗號連成一條;但是有時候,程序可能只會其中的部分幾條,剩下的會被忽略!我不知道是否真的有這個問題,但是我的建議還是不要亂用逗號。

      注意空間復雜度

      在學習任何一個算法或數據結構時,一定要翔實記錄它的空間復雜度。比如說,trie樹的空間復雜度是多少?一般要開多大?用鏈式前向星存無向圖,是否把邊數組開成題給的兩倍?這些問題不注意,你也許可以通過樣例,但最后可能一分都拿不到。如果你是在網上評測,有時候評測機并不會反饋RE的信息,而是WA。如果不加注意,你會因為這個問題而調試很久。

      另外,足夠大的空間也可以從一定程度上提高程序的運行速度。這應該和“空間大易于伸展手腳”是一個道理。

      注意類型轉換

      始終注意類型轉換。有時候即便你把所有的數值變量開成long long類型,你可能會在賦值的時候忘記把一個int類型的表達式進行轉換。這樣,表達式在被賦值前就會發生溢出。任何時候要牢記各種變量的類型,并時不時轉換一下。

      另外,強制轉換的速度會相當慢。如果你想轉換成long long類型,直接在變量前乘上1ll;對于普通double類型,可以直接乘上1.0;對于更特殊的long double或是__int128類型,你就只能強制轉換了。

      慎用STL

      STL會節省很多時間,而且大部分時候它們除了常數大以外,由于封裝了很多函數,使得它們操作起來非常方便。但是有些時候,用STL很有可能會RE。當然,這是否需要“釋放內存”,或者一些更高級的處理方法,這我不得而知。

      學會設計參數

      不久前在寫矩陣快速冪的時候,發現“引用形參”比不引用形參要快得多。因此,當函數的參數是一個比較大的數據結構時,采用引用的寫法會加速很多。

      posted @ 2019-09-30 22:06  LinearODE  閱讀(334)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久中文字幕日韩无码视频| 亚洲av成人一区二区三区| 国产精品自在自线视频| 秋霞av鲁丝片一区二区| 国产成人永久免费av在线| 国产乱码精品一区二区三上| 香蕉eeww99国产在线观看| 免费午夜无码片在线观看影院| 欧美成年黄网站色视频| 国产又色又爽又黄的视频在线 | 精选国产av精选一区二区三区| 亚洲一区二区三区播放| 国产精品普通话国语对白露脸| 黄色一级片一区二区三区| 四虎国产精品成人免费久久| 五月综合激情婷婷六月| 91精品国产综合久蜜臀| 亚洲精品日韩在线观看| 国产suv精品一区二区四| 久久久国产成人一区二区| 精品在线观看视频二区| 人妻精品动漫h无码| 国产午夜成人久久无码一区二区| 色综合色国产热无码一| 日韩人妻少妇一区二区三区| 久久人人97超碰国产精品| 加勒比无码av中文字幕| 亚洲人成电影网站 久久影视| 玩两个丰满老熟女久久网| 精品国产美女福到在线不卡| 人人妻人人狠人人爽天天综合网| 精品国产欧美一区二区三区在线| 黄床大片免费30分钟国产精品| 少妇宾馆粉嫩10p| 亚洲成av人片在www鸭子| 亚洲精品美女久久久久99| 国产精品黄色大片在线看| 精品欧美一区二区三区久久久| 毛多水多高潮高清视频| 精品国产中文字幕在线| 在线高清免费不卡全码|