swap:

在oi中,swap用于交换两个变量的数值。

初学oi时,我们这样操作:

也就是说,需要一个temp变量来寄存x或y的值,因为当一个变量被赋值成为另一个变量时,没有temp它的值会丢失。

貌似很基础的亚子。

进阶版:

进阶版swap不在需要中间变量temp,常数也更优:

具体是这样的:

int sswap(int &x, int &y)
{
x ^= y ^= x ^= y ;
}

原理:一个数经过两次异或后,等于自己:

实在不理解手动膜你啦。

于是我们把上面的式子疯狂展开:

还不理解的话:

这里temp就是第一步x^y的值,把他们不同的部分作为中间变量,从而在上方第3,4行分别以第一步的x值为temp异或出自己的值。

完结。

/滑稽/

关于swap交换操作的新方法的更多相关文章

  1. Centos7提示swap交换空间不足解决方法

    一张图就能解决的问题,就不多bb了

  2. 设置/修改centos上的swap交换分区的方法

    设置centos上的swap交换分区的方法 作为linux世界里最稳定的服务器版本,rhas5一直有很大的应用面,之前一直关注的是freebsd,因为应用的需要,特别在配合mysql和oracle上r ...

  3. 交换ctrl和caps_loack的新方法

    交换ctrl和caps_loack的新方法 Table of Contents 1 过程 1 过程 debian用了几年,由于emacs的关系,一直将右ctrl和caps_lock键交换,使用的是xm ...

  4. Linux中的SWAP交换分区

    大多数 Linux 在系统安装时都会提醒并建议你划分一个 SWAP 交换分区,如果你是从 Windows 切换到 Linux 的新用户,兴许对这个 SWAP 会感到十分疑惑. SWAP 交换分区到底是 ...

  5. 揭开Linux操作系统的Swap交换区之谜

    揭开Linux操作系统的Swap交换区之谜 Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要.通过调整Swap ...

  6. linux中增加swap分区文件的步骤方法

     一.swap交换分区 Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临 ...

  7. Linux下swap(交换分区)的增删改

    swap介绍 Linux 的交换分区(swap),或者叫内存置换空间(swap space),是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合.交换分区的作用是,当系统物理内存吃 ...

  8. Linux Swap交换分区介绍总结

    Swap交换分区概念   什么是Linux swap space呢?我们先来看看下面两段关于Linux swap space的英文介绍资料: Linux divides its physical RA ...

  9. 几个 Ceph 性能优化的新方法和思路(2015 SH Ceph Day 参后感)

    一周前,由 Intel 与 Redhat 在10月18日联合举办了 Shanghai Ceph Day.在这次会议上,多位专家做了十几场非常精彩的演讲.本文就这些演讲中提到的 Ceph性能优化方面的知 ...

随机推荐

  1. 【持续更新】一个简洁、易用的美赛 LaTeX 模板: easyMCM

    目录 1 当前美赛模板通行情况的概述 2 EasyMCM 宏包说明 2.1 与 mcmthesis 的关系之说明 2.2 easymcm宏包的简介 2.3 美赛模板下载地址 3 README 摘录 3 ...

  2. [转帖]Google Chrome 解决 “您的连接不是私密连接”

    Google Chrome 解决 “您的连接不是私密连接” 和被毒霸劫持 自己搭建了 k8s的 dashboard 结果 chrome 最新版本的打不开了.. 百度了下 园友的解决方案很完美 这里面转 ...

  3. [转帖] 修改nginx 默认上传文件大小

    nginx默认会限制上传文件的大小为1M https://blog.51cto.com/ycgit/1563307 艺晨光关注0人评论12037人阅读2014-10-13 15:29:50   htt ...

  4. mysql语句(二)

    --MySQL 连接的使用 JOIN 按照功能大致分为如下三类: INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录. LEFT JOIN(左连接):获取左表所有记录,即使右表 ...

  5. Kubernetes-Service(服务)

    ⒈引用 在Kubernetes中,pod通常需要对来自集群内部的其他pod或来自集群外部的客户端的HTTP请求做出响应.pod需要一种寻找其他pod的方法来使用其他pod提供的服务,不像在没有Kube ...

  6. B - How many integers can you find

      Now you get a number N, and a M-integers set, you should find out how many integers which are smal ...

  7. cmake 升级

    cmake 升级 1下载   cmake-3.1.0.tar.gz2.解压 3.执行  ./configure 4.执行 make 5. 执行   sudo make install 6.添加环境变量 ...

  8. 让 history 命令显示日期和时间

    echo 'HISTTIMEFORMAT="%F %T "' >> /etc/profile source /etc/profile

  9. android 自定义控件之NetWorkImageView 处理listview等控件中的图片加载乱序问题

    0.调用: BaseAdapter中设置方法 holder.iv.loadImage(url); adapter_xxx.xml 中 控件需要用 xxx.NetWorkImageView 1 NetW ...

  10. mybatis的BLOB存储与读取

    http://blog.csdn.net/luyinchangdejiqing/article/details/45096689 简单介绍一下背景环境,web开发避免不了照片附件之类的东东,原先是存到 ...