APSchmidt 发表于 2022-8-19 11:30

03.C++算法竞赛——需要注意的点和小优化

一些需要注意的地方

[*]无论是什么函数一定要return,不怕一万,就怕万一。
[*]算法竞赛中一般可用万能头,即bits/stdc++.h。但是用之前一定要搜一下比赛让不让用万能头,还是那句话。
[*]cin和cout效率非常低,遇到大量数据读写时,请使用scanf和printf,或快速读写。
[*]尽量使用STL,这样简洁容易差错,而且也有效率保障。
[*]尽量不要用c头文件。如stdio.h
一些小优化

[*]把i++换位++i,据说这个优化能优化的非常小。
[*]符合条件的乘除法改为位运算。详细讲解。据说效果不错。
[*]i<n或i>n换位i!=n,优化效果很有限。
骗分
由于判断程序是黑盒测试,因此可以骗分。比如在判断一个数是非质数时,不会做时,可以直接cout<<"yes",运气之神会给予你一半的分数。
更好的方式是(理想下,能拿到 \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]
查看完整版本: 03.C++算法竞赛——需要注意的点和小优化