NOIP比赛写代码注意事项

NOIP比赛写代码注意事项

1.头文件:
   常用头文件:
      <iostream>
      <cstdio>
      <cmath>
      <cstring>
      <cstdlib>
      cstdio包含scanf和printf,有的编译器iostream都包含了,都写上比较好一般写代码时先都把这几个写上去。
  较常用头文件:
       <algorithm>
       <vector>
       <queue>
       <string>
  头文件太多时,容易忘写using namespace std;我经常忘了输这一行。

但是用了using namespace std;之后容易产生的问题是:自己的变量名和std命名空间的变量名冲突,而且在windows下,编译器不报错。在linux下报错。所以自己的变量名不要使用time,next,pipe。如果需要这几个单词,可以用Time, Next。当然,time,next,pipe作为结构体的成员名是没问题的。


2.STL:
    STL主要是依靠各种容器和函数来实现各种功能,但是STL有些比较鸡肋,比如队列和栈,手写很方便,而且快一些,主要就用堆(priority_queue),字符串(string)和动态数组(vector)。


3.数组:
    C++里数组出问题可能会出现莫名其妙的问题,所以一定要记得把数组开大点,并且赋初值。最好是开成全局变量,因为在main函数里定义的是局部变量,给你的空间会小一些,二维数组随便一开就爆了。


4.指针:
    指针我除了学的时候几乎没用过,一般就开个数组用下标i做指针,比较方便。


5.时间空间资源和精度:
    1000毫秒内最大循环次数不要超过10^8(10^8有点悬,10^7绝对不超时)。空间限制在128MB时,数组元素类型为int时,元素个数最多千万级别(约3*10^7),要定义在到main函数外面的全局变量区(二维数组的两个维度大小要相乘)。

6.数据范围

  有的题目,比如深学游戏一题,多个数相加,每个数的最大值就到了1e9,那么存放和的变量就必须是longlong  

  有的题目,比如求最短路径的题目,边权的最大值都到了1e9,并且更新最短路径时时两个边权相加,结果就是2e9,那么我们在为dist数组元素赋值为无穷大时,应该设多少呢?我们的无穷大可以是1e9+1,或者0x3f3f3f3f=十进制1061109567, 0x7f7f7f7f=十进制2139062143,int 的范围是-2147483648 ~ 2147483647。所以以后我们程序中的无穷大就定义为1e9+1或0x3f3f3f3f

7.千万注意输出格式和大小写问题

    比如注意题目要求每个输出结果在同一行,还是在不同行;或输出yes no right impossible等英文提示时要求首字母大写。比如 洛谷1443 马的遍历 输出要求 左对齐 占位5

8.建立图的邻接矩阵和邻接表时,注意单向边和双向边,重边,自环等情况。

posted @ 2018-08-02 16:42 StoneXie 阅读(...) 评论(...) 编辑 收藏

猜你喜欢

转载自blog.csdn.net/StoneXieAC/article/details/86627676