找回密码
 立即注册
查看: 287|回复: 0

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

[复制链接]
发表于 2022-8-19 11:30 | 显示全部楼层 |阅读模式
一些需要注意的地方

  • 无论是什么函数一定要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()随机数。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 13:36 , Processed in 0.087916 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表