原贴链接:http://www.cnblogs.com/widerg/p/7353866.html

作为一名OIer,在Noip中卡(kǎ 我就爱读kǎ)常数可以说是必备技巧。在此总结一下我所知卡常数的神奇手法:

  1. IO优化

    • fread 和 fwrite ,如果还想再优化有mmap....(然而并不会用,好像也没用。。。)
    • 读入优化(这个非常重要!!!!!!!)
    inline int Read()
    {int x=0,f=1;char c=getchar();while(c>'9'||c<'0') {if(c=='-') f=-1;c=getchar();}while(c>='0'&&c<='9') {x=x*10+c-'0'; c=getchar();}return x*f;
    }
    • 输出优化好像用不到唉( ˇˍˇ )
  2. inline
    在声明函数之前写上inline修饰符(就像上面Read()一样),可以加快一下函数调用,但只能用于一些操作简单的函数。涉及递归,大号的循环等很复杂的函数,编译器会自动忽略inline。

  3. register
    在定义变量前写上register修饰符,用于把变量放到CPU寄存器中,适用于一些使用频繁的变量:
register int n,m;

寄存器空间有限,如果放得变量太多,多余变量就会被放到一般内存中;
快,不是一般的快,快到什么程度呢?:

    register int a=0;for(register int i=1;i<=999999999;i++)a++;
    int a=0;for(int i=1;i<=999999999;i++)a++;

结果:
优化:0.2826 second
不优化:1.944 second
恐怖啊!!!!

  1. 循环展开

    循环展开也许只是表面,在缓存和寄存器允许的情况下一条语句内大量的展开运算会刺激 CPU 并发(前提是你的 CPU 不是某 CPU)...

  2. 取模优化(仅O2)
//设模数为 mod
inline int inc(int x,int v,int mod){x+=v;return x>=mod?x-mod:x;}//代替取模+
inline int dec(int x,int v,int mod){x-=v;return x<0?x+mod:x;}//代替取模-
  1. 前置 ++

    后置 ++ 需要保存临时变量以返回之前的值,在 STL 中非常慢。事实上,int 的后置 ++ 在实测中也比前置 ++ 慢 0.5 倍左右(UOJ 上自定义测试)

  2. 不要开bool,所有bool改成char,int是最快的(原因不明)。

  3. if()else语句比()?():()语句要慢,逗号运算符比分号运算符要快。

  4. 数据结构用指针代替数组(个人觉得无关紧要)

    数组在用方括号时做了一次加法才能取地址!
    所以在那些计算量超大的数据结构中,你每次都多做了一次加法!!!在 64 位系统下是   long long 相加,效率可想而知。

C++ Interesting卡常数相关推荐

  1. 数字黑洞水仙花数6174卡普耶卡变换,卡布列卡常数归敛

    今天在头条上刷到一篇文章,挺有趣,不想点连接的话我直接把文章考过来了,不知道算不算侵权 头条文章链接 全文: 解析神秘数学黑洞"6174" 或许你早就听过这个故事:有一个神秘的数学 ...

  2. 欧拉降幂 ---- 2020 杭电多校[E - Fibonacci Sum]+欧拉降幂+和式的调整+二次剩余+毒瘤卡常

    解题思路: 首先你得知道斐波那契的通项式子:首先你得知道斐波那契的通项式子:首先你得知道斐波那契的通项式子: F(n)=15[(1+52)n−(1−52)n]F(n) = {1\over\sqrt5} ...

  3. 【bzoj3240 洛谷P1397】矩阵游戏[NOI2013](矩阵乘法+卡常)

    题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3240 这道题其实有普通快速幂+费马小定理的解法--然而我太弱了,一开始只想到了矩阵乘法的 ...

  4. 洛谷P5072 [YNOI2015]盼君勿忘 莫队+unordered_set+毒瘤卡常

    在太阳西斜的这个世界里,置身天上之森.等这场战争结束之后,不归之人与望眼欲穿的众人, 人人本着正义之名,长存不灭的过去.逐渐消逝的未来.我回来了,纵使日薄西山,即便看不到未来,此时此刻的光辉,盼君勿忘 ...

  5. 数字黑洞6174(Kaprekar常数)之java演示

    1 简介 数字黑洞6174,也称"卡谱耶卡常数"(Kaprekar). 任意选一个四位数(数字不能完全相同),把所有的数字从大到小排列,再把所有数字从小到大排列,用前者减去后者,得 ...

  6. 简单的卡常数【OI缩水版】

    一.为什么要卡常数? OI中数据结构与常数优化关系很大的 如果你常数好可以暴力过数据结构题啦~ 如果你常数不好即使复杂度一样也会被出题人卡~ 二.常用的卡常数方法 1.卡IO(输入输出) 比较简单的写 ...

  7. 2018.12.5【WC2017】【LOJ2286】【洛谷P4604】挑战(卡常)

    洛谷传送门 LOJ传送门 解析: 目前LOJ速度rank1.但是洛谷上面有两个40msAC的在我前面(空间还小的出奇,估计连排序的数组都存不下)...估计是面向数据编程.. 说明:博主是一个高一OIE ...

  8. 一场CF的台前幕后(上)

    (重发下这篇原发于 2014-06-03的网易博客) 等你等了五千年,只为这一刹那的回眸一笑. 前奏 大约4月份的时候,业界毒瘤pyx噔噔噔跑过来说:"酷爱!我YY了一道题!准备当CF的C& ...

  9. 2020.7月做题记录

    转眼就到了2020的下半年了-前方仍是一片茫然. 长期计划 prufer 序列 2020.07.02-2020.07.04 Problem Finished P2624 [HNOI2008]明明的烦恼 ...

  10. 一场CF的台前幕后(上)——转

    前奏 大约4月份的时候,业界毒瘤pyx噔噔噔跑过来说:"酷爱!我YY了一道题!准备当CF的C" 我当时就被吓傻了."Yet another Chinese round?& ...

最新文章

  1. 【Qt】通过QtCreator源码学习Qt(八):插件生命周期及对应状态(代码走读)
  2. 读完ACL 2019录取的30篇知识图谱论文,我发现了这5点趋势
  3. python自动化干什么-高效工作,拒绝加班,看Python自动化功能到底有多强大
  4. 光耦p621引脚图_光耦反馈设计再也不愁!开关电源中的几种典型光耦隔离接法对比...
  5. 【拯救赵明】全面防护网络***服务器负载及安全解决方案
  6. 数据挖掘算法之决策树算法总结
  7. NVIDIA Physix Unity3D
  8. leetcode 121 python(动态规划)
  9. SSM整合 mybatis多条件查询与分页
  10. ACL2021最佳论文出炉,来自字节跳动
  11. Python 批量推送微信公众号模板消息
  12. 《羊了个羊》谁还在玩我笑他两年半
  13. ffmpeg过滤器系列:序章,什么是ffmpeg过滤器?ffmpeg过滤器可以用来做什么
  14. 修改Win10右键菜单
  15. 学习C C++的必备技能(1)
  16. AnimationEvent 'XXX' has no receiver!
  17. php把图片合成视频,如何把照片做成视频 照片音乐视频制作 并插入几段短视频片段...
  18. element框架el-aside高度100%显示
  19. 相片打印机原理_用家用打印机打印照片和去冲印照片有什么区别?
  20. 【 微信小程序请求封装】【进阶版】处理401请求token过期--重新登录--重新发起刚才过期的请求

热门文章

  1. vmware卸载不干净,重装不了问题;装了虚拟机上不了网问题;装了虚拟机发现windows在cmd中ping不了虚拟机,虚拟机能ping的了windows;secureCRT或者filezilla连接
  2. OpenTCS 之 DefaultDispatcher 默认调度算法
  3. 手把手教你绘制最基础的列线图
  4. CCA分析图如何解读_欧易/鹿明生物云平台:点点鼠标,轻松完成RDA/CCA分析
  5. 非对称密钥/对称密钥加解密工具
  6. 曲面上的测地线 MATLAB,§6曲面上的测地线.PDF
  7. SmartUpload问题
  8. 高中计算机教师学期论文,高中信息技术论文选题
  9. 高通mdm9607 分区表修改
  10. 绕过卡巴斯基通过RPC控制lsass注入DLL