大佬们喜欢用宏定义的原因吧

做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怎么写的都能直接认出来

以及,写算法题的代码主要还是为了过题,又不是为了让别人看懂的,所以别人看不看得懂并不关我什么事。。。要写题解贴上去的代码另当别论

 

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