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


    ▎前言

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

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

    ▎定义

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

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

      所以,卡常数并不是数论中的那些卡特兰数什么的,只有一个含义:你的程序可能是O(n2),但是题解也是O(n2)的,可是你为什么过不了呢?原因就是常数太大,比方说别人的+可能要1ms,那么你可能就要2ms,所以你的程序就会被很小的常数卡掉,所以我们在写代码时,要采取一些措施才能避免被卡常数。
    ▎解决方案
      详见小编的博客:你还在担心时间复杂度太高吗?
      下面还有一些方案:
    • 多用scanf和printf,cin和cout很慢,切忌不可混用。
    • 三元运算符? :比if else快,但不比if快。
    • 频繁使用的数用register,和inline一个用法,只不过有可能把变量存入CPU寄存器,来减少时间。
  • 相关阅读:
    JS常见异常
    Spring boot 的 @Value注解读取配置文件中的00开头的字符串
    常用网址
    IntelliJ使用教程
    eclipse
    swagger
    Mybatis
    Linux常用命令
    阿里云短信
    Flink Checkpoint-轻量级分布式快照
  • 原文地址:https://www.cnblogs.com/TFLS-gzr/p/11394752.html
Copyright © 2020-2023  润新知