• 关于swap交换操作的新方法


    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异或出自己的值。

    完结。

    /滑稽/

  • 相关阅读:
    次小生成树模板(poj1679)
    ISAP模板
    ZOJ3781
    Uva12663
    LightOJ1089
    网络流DINIC模板
    FZU2030(括号匹配)
    NOIP2011提高组(选择客栈)
    DRF之视图家族
    DRF多表设计与ModelSerializer组件
  • 原文地址:https://www.cnblogs.com/lbssxz/p/11747047.html
Copyright © 2020-2023  润新知