0x00基本算法


1.位運算

     & 與  //&1等同於%2

  | 或

  ~ 非

  ^ 異或 //不同為1,相同為0。也就可以叫不進位加法

  >> 右移

  << 左移

  a>>k==a/2^k

 常用操作:

  (1)   求x的第k位數字  x >> k & 1  //

  (2)   lowbit(x) ,返回x的最后一位1以及后的0,返回的數都是一個2的多少次方

   -x==~x+1二進制表示負數補碼等於其原碼的反碼+1(取反+1)

      

int lowbit(int x)
{
    return x&(-x);
}

  

swap(x,y) ⇒⇒ x^=y^=x^=y

x%2==1 ⇒⇒ x&1

x%2==0 ⇒⇒ ~x&1

判斷一個兩個數是否滿足 x>y

x>y ⇒⇒ y-x>>31(注:這里的 x,yx,y 都是 int 型變量,若 x,yx,y 為 long long 型變量則將 31 改為 63)

2.遞歸

  注意如果求解子問題失敗,記得要《回溯時還原現場》。遞歸不難,難的是找到遞推關系

  分治: 把一個問題划分成若干個規模小的子問題,對這些子問題遞歸求解,然后再回溯時通過它們推導出原問題的解

計算機采用“堆棧結構”實現函數調用;局部變量是用棧存的占用空間太多會暴棧,這時可用全局變量。

全局變量用堆存

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM