嘘~ 正在从服务器偷取页面 . . .

OI总结-卡常


OI总结-卡常

这个系列终于来了😎,虽然不是什么卡常带师,但是还是有点东西可以写的。

主要是今天看到了很多奇奇怪怪的优化方法,所以还有一些东西需要慢慢补。


一、输入优化

咕咕咕。


二、输出优化

咕咕咕。


三、位运算优化

这里是最魔幻的,我记得 yukuai26 老师说他们大二的时候会讲一堆奇奇怪怪的优化

  1. char型数字int型数字 (卡常效果:微小)

    char x = '1';
    cout << (x & 15); // 输出的是:1

    原理:一般的写法是 x = x - '0' ,众所周知字符 \(\tt{0}\) 对应的 ASCII 码是 \(48\)

    \(48 = 32 + 16\) ,正好是二进制下第 \(5,6\) 位,而 \((15)_{10} = (1111)_2\)

    \(x\& 15\) 就是取了一个在 \(48\) 上的增量,这个用法仅适用于数字型。


四、指针优化

  1. 访问 a[0] 可以写成 *a (卡常效果:微小)

    原理:a[x] 本质上就是 *(a + x) (所以写 x[a] 都可以😶‍🌫️)


五、其他优化

  1. 手写常见数据结构,例如 queuevector 等(卡常效果:开 O2 后不确定,有时候会反向优化)

  2. if(xxx) yyy 改成 xxx && yyy (卡常效果:极微小, 但是很美观😶‍🌫️)


文章作者: q779
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 q779 !
评论
  目录