ACM中一些细节问题

1、不要使用万能头文件 

            一是有些oj是不允许用的   二是 他会让你忘记一些比较长的头文件怎么写 比赛的时候不能用 那就gg

 2、c++打函数的时候,一定要打retrun。

3、  开数组不要开的刚好  一定要多加几个

3、有的oj 用的是%lld  有的是%I64d  热身赛的时候注意测试下

4、cin cout尽量不用  很耗时间  很慢  用scanf printf 就好 包括那些 stack queue 什么的  能手打都手打

5、STL里面的  min max 函数在循环里不要用  调用太慢 费时间  用三目运算符代替

6、abs()这个函数不支持long long    建议int也不要用这个函数  用三目运算符  a=a>0?a:-a;

7、最大值设置为  0x3f3f3f3f

              0x3f3f3f3f的十进制是1061109567,是10^9级别的(和0x7fffffff一个数量级)。如果我们想要将某个数组清零,我们通常会使用memset(a,0,sizeof(a)),因为memset是按字节操作的,因为0的每个字节都是0(一般我们只有赋值为-1和0的时候才使用它)0x3f3f3f3f的每个字节都是0x3f,我们只需要memset(a,0x3f,sizeof(a))。

8、double 变量是不能判断  ==  的  因为double 存的时候   3.5 存进去的是3.499999  所以要用减法来判断是否相等

9、位运算   a/2写成 a>>1  a*2写成a<<1   a*2+1写成 a<<1|1   判断奇偶 a&1  一个不省多少时间 但是操作多了 就节省很多时间

另外 位运算的优先级非常的低,注意打括号。

10、用java写题时候   类名必须是Main  复制的时候不要复制包名

11、c和c++输出不要混着用

12、取模运算的题目 最后答案加个  (a+mod)%mod  防止结果出现负数

13、c++头文件里面的c换成.h,会快非常多。  (大佬说的

猜你喜欢

转载自blog.csdn.net/holly_Z_P_F/article/details/81513841