为什么很多大牛在写题的时候要加一堆宏？
感觉很多回答并没有答到题上，包括最高票的。。。根据问题标签和题主提到的BC，题主问的应该是做ACM题时候为什么要用那么多的宏。。。 最直接的原因应该就是提高手速了，这是大多数宏定义在算法竞赛中起的作用，其中还有一大部分是单纯的字符串替换，举个栗子： 如果你有提前写好的宏定义的模板的话。。。 。。。像我这种懒星人一般会觉得下面那个看起来又省事又好读，上面那个是啥啊_(:3」∠)_ 而且不只是宏定义啊，还有各种typedef啊： 还有各种模板里的常用小函数啊，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怎么写的都能直接认出来（for有时候还是要稍微注意下的，比如及其少数的某些几百行的模板里写了20多种for的宏定义的。。。） 以及，写算法题的代码主要还是为了过题，又不是为了让别人看懂的，所以别人看不看得懂并不关我什么事。。。要写题解贴上去的代码另当别论 另外我觉得应该不会有多少人在比赛时候还有那心思去想着混淆代码。。。而且如果是TC的话似乎有针对故意混淆代码的惩罚措施（虽然我还没有听说过实例），甚至模板过长，unused code超过了某个比例也会被警告的（这个是事实，我做TC是把平常用的模板截掉一大段没用的才交上去） /* 还有一些比较腹黑的人可能喜欢用这样的宏定义。。。 这种一定要注意啊。。。没仔细看以为对方会爆int就直接去challenge/hack的哭去吧 */