ACM题目小经验

本文探讨了在编程过程中如何合理选择局部变量与全局变量、字符串处理、输入输出函数使用及算法复杂度估算等关键技巧。同时,给出了针对不同规模数据集时算法选择的建议,包括指数级、n^2级、线性级算法的应用场景,以及如何通过深入理解题意来优化解决方案。
摘要由CSDN通过智能技术生成

1.有时遇到定义成局部变量就AC,定义到全局就WA的情况,多半是因为这个变量每次都需要初始化,而全局的时候只被初始化一次。在决定使用局部变量还是全局变量的时候应该先思考其初始化(是否需要针对每个case都初始化)的情况。

2.字符串char *a="abcd"; 是正确的,但如果a[0]=a[0];则会出现错误,所以字符串优先考虑存为char[ ]数组的形式,或者使用c++string

3.scanf()第一注意使用“&”千万不能漏,第二scanf()不会接受" " "\t" "\n",如果字符中需要空格,使用gets()。第三,scanf()不会取出其后面的空格或者其他特殊符号,需要显式地提出,不然这些特殊符号就一直在缓冲区中,会引发下次输入的错误。%hd %hu %d %d %ld %lu其中h修饰是short的意思,l是long的意思,%f %lf %Lf分别代表float、double、long double,注意从文本输入浮点数只能用%lf 即double接收.scanf()!=EOF来判断,一般不使用scanf()!=NULL来判断,有实际经验用NULL判断会导致无限读取最后的一行数据或者其他错误。

4.从题目给的数据,大致推断算法所需要的复杂度,例如n=30以内,那么指数级的应该可以接受,枚举、回溯、搜索等算法优先考虑。n=10000,那么最多可能接受一个n^2级的算法,动态规划、贪心优先考虑,注意深入理解题意。n=100000或者更大的时候,多半考虑线性算法了,理解题意,模拟、数学方法等是优先考虑方案。

5.使用memcpy()函数的时候记得sizeof,因为memcpy默认是以char为单位的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值