一些常数优化
来源:互联网 发布:照片制作软件免费下载 编辑:程序博客网 时间:2024/04/25 13:40
转自:http://blog.csdn.net/qq_33583069/article/details/53086992
如果编译器没有开O2优化
用库函数常数会凭空增加很多。。
似乎NOIP考场不开O2
某些时候,如果你优化到无法再优化的时候
尝试去自己重新实现库函数。
比如
- isdigit()
- max()/min()
- unique()/lower_bound()/upper_bound()
- scanf()/printf()
- cin/cout
- getchar()/putchar()
- STL::queue/stack/priority_queue/deque
- …
常数优化:
位运算
没有O2的时候(有O2不用管。编译器会帮你)
x*10 <=> (x<<3)+(x<<1)
x!=y <=> x^y
x!=-1 <=> ~x
x*2 <=> x<<1
x*2+1 <=> x<<1|1
x/2 <=> x>>1
(x+1)%2 <=> x^1
x%2 <=> x&1
x%2==0 <=> ~(x&1)
语法
inline 在非递归函数前加修饰。
循环变量 int i =>register int i
c++没有尾递归优化。所以可以自己手写栈来优化递归。
原则上尽量减少乘/除/取模 指令
取模指令如果是逐渐累加的话,
x+=add;x%=mod;
=> x+=add;x>=mod?x%=mod:1;
A?B:C 好像要比if,else语句快。
memset初始化细节 memset(a,0x3f,sizeof(a));
最后的a[1] = 0x3f3f3f3f
int的极限是 0x7fffffff
还可以~0u
INF有的时候不要刚好赋值到0X7FFFFFFF,如果有2个inf的值相加就会溢出。
乘法溢出。
这个要注意。不要直接全部long long这样慢很多
关于类型转换,一般不用管,编译器会处理。
但是,考试环境有点老?没试过,所以如果有不同类型的话最好在前面显示的强转一下。
赋值>int的话请在数字后加LL
- 一些常数优化
- splay 常数优化
- 学习一个常数优化
- 随便写写(内附fread读优和一些较弱的常数优化)
- 矩阵乘法的常数优化
- 01背包(降维 + 常数级优化)
- HDU 2844 Coins 多重背包+常数优化 -
- A water problem 常数优化的故事。。
- 浅谈程序复杂度的常数优化
- OI中C++常数问题及其优化
- VB控件属性及其一些常数
- 素数筛法的常数优化简单整理
- 【测速】那些搞笑的常数优化的证实
- 用二进制优化常数卡过Pku3074 Sudoku
- 整数乘法优化问题(乘以常数)(转…
- FZU Problem 2198 快来快来数一数(矩阵快速幂 卡常数 +优化)
- 对dijkstra算法的常数优化-by azui
- bzoj2208 连通数 tarjan缩点&状压常数优化
- BZOJ 4821 [Sdoi2017]相关分析
- Redis、Memcache和MongoDB的区别
- 第十一章 使用类
- python输出Hello World
- 书籍:p/m程序设计:处理文件和操作系统(更新到shell部分,php文件目录等已更新完毕)
- 一些常数优化
- 一道非常好的图论构造题
- [linux上路] 开发环境准备一 Debian8 jdk 配置
- 【IMWeb训练营作业】Todolist,没有用视频的例子
- 软链接和硬链接
- Agri-Net
- C#全局监听Windows键盘事件
- 高斯消元,解线性方程组
- Joseph's Problem 数论 找规律