【算法•日更•第五十五期】知识扫盲:什么是卡常数?

▎前言

  小编之前一直都认为卡常数读音是ka chang shu,实际上是qia chang shu。

  希望小伙伴们不要读错了。

▎定义

  程序被卡常数,一般指程序虽然渐进复杂度可以接受,但是由于实现/算法本身的时间常数因子较大,使得无法在OI/ICPC等算法竞赛规定的时限内运行结束。

  常数被称为计算机算法竞赛之中最神奇的一类数字,主要特点集中于令人捉摸不透,有时候会让水平很高的选手迷之超时或者超空间。(copy自百度)

  所以,卡常数并不是数论中的那些卡特兰数什么的,只有一个含义:你的程序可能是O(n 2),但是题解也是O(n 2)的,可是你为什么过不了呢?原因就是常数太大,比方说别人的+可能要1ms,那么你可能就要2ms,所以你的程序就会被很小的常数卡掉,所以我们在写代码时,要采取一些措施才能避免被卡常数。
▎解决方案
  详见小编的博客: 你还在担心时间复杂度太高吗?
  下面还有一些方案:
  • 多用scanf和printf,cin和cout很慢,切忌不可混用。
  • 三元运算符? :比if else快,但不比if快。
  • 频繁使用的数用register,和inline一个用法,只不过有可能把变量存入CPU寄存器,来减少时间。

转载于:https://www.cnblogs.com/TFLS-gzr/p/11394752.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值