03.C++算法竞赛——需要注意的点和小优化
一些需要注意的地方[*]无论是什么函数一定要return,不怕一万,就怕万一。
[*]算法竞赛中一般可用万能头,即bits/stdc++.h。但是用之前一定要搜一下比赛让不让用万能头,还是那句话。
[*]cin和cout效率非常低,遇到大量数据读写时,请使用scanf和printf,或快速读写。
[*]尽量使用STL,这样简洁容易差错,而且也有效率保障。
[*]尽量不要用c头文件。如stdio.h
一些小优化
[*]把i++换位++i,据说这个优化能优化的非常小。
[*]符合条件的乘除法改为位运算。详细讲解。据说效果不错。
[*]i<n或i>n换位i!=n,优化效果很有限。
骗分
由于判断程序是黑盒测试,因此可以骗分。比如在判断一个数是非质数时,不会做时,可以直接cout<<&#34;yes&#34;,运气之神会给予你一半的分数。
更好的方式是(理想下,能拿到 \frac{3}{4} 的分数):
int is_prime(int num){
//仅作示范,不具备参考价值
if(num>1e6) return 1;//把能解决的解决,不能解决的交给运气解决
int end=sqrt(num);
for(int i=2;i<=end;++i){
if(num%i==0) return 0;
}
return 1;
}
也可以用rand()随机数。
页:
[1]