大佬們喜歡用宏定義的原因吧

做ACM題時候爲什麼要用那麼多的宏。。。

最直接的原因應該就是大多數宏定義在算法競賽中起的作用,其中還有一大部分是單純的字符串替換,舉個例子:

for(int i=0;i<n;i++)

   vec.push_back(make_pair(p[i].first,-p[i].second));

如果你有提前寫好的宏定義的模板的話。。。

rep(i,0,n)

   vec.pb(mp(p[i].X,-p[i].Y));

而且不只是宏定義啊,還有各種typedef啊:

typedef pair<int,int>pii;

typedef long long ll;

還有各種模板裏的常用小函數啊,gcd和pow之類的,提前寫好了基本都是爲了後面比賽用着省事的。

當然這要看個人習慣了。。。不過,一般ACMer用宏定義的,基本上90%會把一些常用的給定義成這樣:push_back=pb/PB,make_pair=mp/MP,first=X/x/fst,second=Y/y/snd。。。以及各種for的寫法,rep,FOR,foreach,forIt。。。只要比賽打多了不用看他模板的define怎麼寫的都能直接認出來

以及,寫算法題的代碼主要還是爲了過題,又不是爲了讓別人看懂的,所以別人看不看得懂並不關我什麼事。。。要寫題解貼上去的代碼另當別論

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章