有疑问或错误尽管评论!! 
下面以C++为准。

本文手(粘)打(贴)于各大博客之间 有问题。。。。。 我也不懂

max、min的优化

我们知道,打max、min时,要用分支(if语句)。这样会使程序超慢。

有没有其他方法?有的。

当x<0时 x>>31=-1 (11111111111111111111111111111111)

当x>=0时 x>>31=0(00000000000000000000000000000000)

所以我们可以通过作差,求出谁大谁小。

int max(int a,int b)
{int m=(a-b)>>31;return a&~m|b&m;
}
int min(int a,int b)
{int m=(a-b)>>31;return a&m|b&~m;
}

以max举例, 
当a>=b时,m=0,所以max(a,b)=a&~0|b&0=a&-1|b&0=a

当a< b时,m=-1,所以max(a,b)=a&~-1|b&-1=a&0|b&-1=b

补上一个abs的优化:

int abs(int a)
{int b=a>>31;return (a+b)^b;
}

当a>=0时 b=0 abs(a)=a^0=a

当a<0时 b=-1 abs(a)=(a-1)^-1=-a(相信大家都懂补码的转换方式)

有一点很重要的是,不要乱用!比如不能硬是将int改为long long,注意右移的位数要变!

手动编译优化

格式:

#define x y 

在程序中,一切出现x的地方都会变成y。

可以省码量,增强可读性。

有种带参数的,在名字(x)后打空格,里面写参数(用逗号隔开,不用标类型)

例如#define max(a,b) ((a)>(b)?(a):(b))

但是要记住它的本质,它只是单纯的替换。若不加括号,也许会出现各种运算顺序的错误。还有,不要将长的式子、函数、++或–放进去。不然会计算多遍,时间也许会炸。

取消宏定义:

#undef x 

不解释 
还有其它的不怎么会用到,有兴趣的同学可以上网搜。 
补上懒人的文件输入输出:

#define I_O(x) freopen(""#x".in","r",stdin);freopen(""#x".out","w",stdout);

cstring中常用的函数

这些函数应该人人都会,但还是有好多人不会。

先说一下指针与数组的关系。

若有数组int a[N];

则a表示a[0]的地址(&a[0])

*a即是a[0] 
a+i=&a[i] 
*(a+i)=a[i]

memset(指针(数组名),数值(最大127,最小128,清零0),大小(sizeof ……)) 
用法就是将一数组初始化。

memcpy(指针A,指针B,大小SIZE)

将B出复制SIZE这么多的内存到A处。

排序

sort(指针begin,指针end)

将begin到end-1的元素以operator<进行快速排序。

sort(begin,end,cmp)

将begin到end-1的元素以cmp进行快速排序。

有的孩子不知道cmp咋搞。


比如从大到小排序

bool cmp(int a,int b)
{return a>b;
}

a代表前面的元素,b代表后面的元素。表示排序后的序列满足a>b!

稳定性排序:

stable_sort(begin,end);

steble_sort(begin,end,cmp);

queue里有一个,但我不爱用,因为内部一定有许多繁杂的操作,比如指针开辟一个存储空间,会使程序变慢。

我用algorithm里的堆。

先注意一下比较函数int cmp(int a,int b)

a表示后代,b表示祖先,满足一个这样的顺序。(可以理解为大根堆)

make_heap(begin,end)

将begin到end-1的元素变成大根堆

make_heap(begin,end,cmp)

将begin到end-1的元素以cmp的顺序变成大根堆

push_heap(begin,end)

push_heap(begin,end,cmp)

前面begin到end-2已满足堆的性质,将end-1的元素放进堆

pop_heap(begin,end) 


pop_heap(begin,end,cmp) 


将begin的元素弹出,移至end-1处。

转载于:https://www.cnblogs.com/_Yrh/p/9240133.html

【FBI WARNING】一些Noip的黑科技 持续整理!相关推荐

  1. 自制黑科技------桌面整理工具

    桌面文件太多?找不到文件?通过使用程序,科学的区域划分和文件归类,帮你的桌面变得更整齐.提高你的使用效率. 附上桌面图片一张 点击打开链接

  2. (持续更新)一些黑科技和技巧

    有疑问或错误尽管评论!! 下面以C++为准. 黑科技 1.读入优化 在做题时,读入量较大的时候,便可以用来卡常. 据说GDOI有一题卡读入,题目直接给了学生读入优化. Pascal选手应该很无奈--就 ...

  3. 围巾都这么黑科技了,是我见识少了

    有一个永恒的话题: 北方冷一点还是南方冷一点? 答案是:哪里都冷! 冬天最痛苦的莫过于走出空调房-- 刺骨的风直直的从领口处灌进去 那叫一个"透心凉,心飞扬" 缠了好几圈的大围巾却 ...

  4. 阿里云首席科学家闵万里:我们为什么敢挑战一百年的制度,因为黑科技能为挽救生命抢来50%的可能性

    如果急救车不被困在红灯下绝望等待,里面垂危的生命,或者还有希望.也许AI可以做到,让绿灯提前为他敞开生命之路. 编辑 | 鸽子 在这世界上,最令人绝望的等待就是在急救车上,无情的红色信号灯将它一路拦截 ...

  5. 潘在亮:给业务开发提供黑科技装备的“测试Q博士”(图灵访谈)

    嘉宾简介: 潘在亮, 现任腾讯 社交网络质量部测试开发中心组长.加入腾讯之前,先后任职甲骨文.微软公司测试开发工程师,参与企业级搜索和Visual Studio产品的测试开发工作.于2009年加入腾讯 ...

  6. 不挡脸,放肆看!揭秘B站黑科技蒙版弹幕

    来源:AI前线 本文约2019字,建议阅读5分钟. 本文为你揭秘B 站推出的一种"不挡脸"的黑科技弹幕以及背后的故事. [ 导读 ]不久前,B 站发布一条官方消息,为了更好的提升用 ...

  7. 【创新应用】未来10年,这些黑科技必将颠覆我们的生活

    来源:智能研究院 从无人驾驶汽车到机器人工人,在我们熟悉所有这一切之前,未来正迎面走来. 根据世界经济论坛全球议程理事会关于<未来软件与社会>的一份报告,到2025年前,很多新兴技术将会达 ...

  8. 19个决定性时刻,2030年前,这些黑科技必将发生

    来源:科技联盟技术中心 摘要:从无人驾驶汽车到机器人工人,在我们熟悉所有这一切之前,未来正迎面走来. 根据世界经济论坛全球议程理事会关于<未来软件与社会>的一份报告,到2025年前,很多新 ...

  9. 揭秘|超乎想象!未来50年将出现的九大黑科技……

    来源:世界科技创新论坛 Insititute for the Future是一家专门做预测的研究机构.该机构的首席研究总监Mark Frauenfelder详细描述了人类在未来能够用上,而今天却仍被认 ...

最新文章

  1. linux利用* vim提权,linux 通过suid vim.basic文件提权
  2. 201-3-19李宏毅机器学习视频笔记七(游戏解释Gradient Descent)
  3. 经典分类:线性判别分析模型!
  4. Linux(10)用户和组管理命令
  5. Xubunbtu远程桌面的tab键
  6. 微信公众号中ip白名单用谁的ip
  7. Scala 中的函数式编程基础(一)
  8. 【强化学习】策略梯度Policy-Gradient
  9. linux 改用户组密码,Linux用户和组的操作(八) 修改用户密码 passwd
  10. 菜鸟裹裹电脑版_【绵阳最新转让】3500低价出售家用制氧机!东芝i5笔记本电脑、索尼微单相机、联想笔记本电脑、奶茶店、服装店转让......
  11. ELF 动态链接 so的动态符号表(.dynsym)
  12. 今天心情不太开心?有点心烦
  13. window消息机制
  14. 音视频常见码率、帧率等概念介绍
  15. 《非暴力沟通》—— 马歇尔·卢森堡博士 读后摘录总结
  16. java使用itext导出pdf,图片、表格、背景图
  17. FBReader 探究 2
  18. C语言发展史——程序猿抗争史
  19. 关于TR1900错误的一些解决方法(引用冯哥)
  20. RabbitMQ-全面详解(学习总结---从入门到深化)

热门文章

  1. 同事操作两个数据源保持事务一致_「微服务架构」微服务架构中的数据一致性...
  2. html动画转换为桌面动态壁纸,动态桌面:把精彩的flash动画设为桌面
  3. c语言让数组地址对齐,C语言实现比特位数组在目标空间左右居中对齐三种方式...
  4. Linux16.04配置OpenCV3.2
  5. linux下查找命令which/whereis/locate/find的对比和总结
  6. [机器学习] Boosting算法2 --- GBDT
  7. 2010-2011年中国嵌入式开发从业人员调查报告隆重推
  8. Ubuntu 10.04 的源服务器和PXE安装环境搭建。
  9. BLAS+BLACS+LAPACK+SCALAPACK安装
  10. 安全警报 该站点安全证书_深度学习如何通过实时犯罪警报确保您的安全