ACM竞赛编程中几点要注意的。

0x01: 如果开的数组足够大,那么应该作为全局数组来开,这样可以防止stackoverflow(栈溢出)

0x02:在输入的数据量较小的时候可以随意使用cin/cout 或者 scanf/printf , 但是在题目明确有大量数据输入的时候,请务必使用scanf/printf ,而有些情况下还必须要使用输入外挂才能过(这种情况碰的比较少)。

0x03:在字符串处理当中,如果在知道长度的情况下,还是优先使用数组,其次才是string类。stack、queue之类的同理。

0x04:在判断两个double类型数的时候,因为double存数据的时候是存在误差的,位数大的情况误差还可能比较大。所以,使用"=="来判断两个浮点数是否相等不靠谱的。靠谱的做法是:判断两个浮点数a,b 的差值是否在一个范围之内。if( fabs(a - b) < 1e-6) ,具体的这个差值应该设为多少应该看具体情况来定。

0x05:很多时候我们需要判断一个数是否为整数,但是使用 if(n%2 == 1) 的做法是不靠谱的,因为在n为负数的时候会得出错误的答案。靠谱的做法应该是使用if(n%2!=0)或者更优雅的做法if (n & 1 == 1).

0x06:有点时候可能需要统计字符串中每个字符出现的次数,可能会开一个整型数组,然后使用char值做下标的方法来存每个字符出现的次数。但是这个是应该意识到char的范围是-128~127,那么char值为负的时候就会出问题了。那么靠谱的做法应该是,直接先把字符强制转型为unsigned char值,然后再去作数组下标。

转载于:https://www.cnblogs.com/marginalman/p/4728536.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值