我的A题经验

1.用cin输入流和scanf函数读入数据消耗的时间是不一样的,当数据量很大时,用cin可能会超时,所以尽量用scanf输入。

 

2.出现 runtime error 可能原因:

①除以零。

②数组越界:int a[3]; a[10000000]=10;

③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10;

④使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10;

⑤数组开得太大,超出了栈的范围,造成栈溢出:int a[100000000];

⑥提交前忘记删掉stdin那一行。。。(亲身re十次的惨痛经历)

 

3.万能头文件:#include<bits/stdc++.h> 只要写这一个头文件就不用写别的了,但是提交的时候要选择GCC编译器。

 

4。对于不同的编译器,即使是相同的代码也可能会出现Accepted和Wrong Answer或者是time limited exceed(超时)这样的天差地别,所以没头绪的时候要考虑有没有可能是这个原因。

 

5.int 型的数计算结果只能是int 所以比如i*i<m这种判断语句如果m为long long int 的话就会出错,所以要把i也改成

long long int 。

 

6.输出长整型数时用%lld和%I64d结果可能会有所不同,一般用%lld效果较好。

 

7.找不出bug时,可以在网上搜AC代码,然后写一个随机生成测试数据的程序,再写一个程序比较输出结果有哪些不同,从中分析原因。

 

8.读取字符串中提取数字时,不要忘了减去48 。

 

9.负数取模时,题会默认结果为正数,如(-2)%7=5,但是电脑计算的时候,会使(-2)%7=-2,导致出错,要在后面加一句if(ans<0) ans+=7;

 

10.当遇到只能通过第一组样例时,往往是由于使用过的变量忘记初始化,

 

11.开发工具中运行到一半程序突然崩溃可能是scanf函数忘了加&,或是数组越界了,还有就是定义的函数没有返回值出口。

 

12.memset可比循环更快初始化数组,在多维数组中更为方便。

 

13.线段树中用于线性存储名字的数组要足够大(4*n)。

 

14.a乘2可以写成a<<1;

 

15.endl的运行时间可能比'\n'慢一些。

 

(持续更新)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值