很多倍增的板子都需要算log,比如說lca,rmq,等等(其實我只知道這兩個倍增,唉太菜了)
然後計算log有乙個math的標頭檔案,裡面的log函式就是求出log10(x),於是求log2(x)就相當於log(x)/log(2)
但是這樣算很容易出玄學bug,因為算出來可能是取整×取整,然後就炸了
然後可以自己手打乙個log,**一般都是這樣的:
int log(intx)
return
cnt; }//
-1表示錯誤(log0)
這個已經很快了,(吧),但是還是有很大的常數。
一般來說可以預處理出所有log,開乙個陣列,不停的×2×2然後全部預處理出來,以後用的時候查陣列就可以了。
接下來重點來了!發放福利!
今天突然想到了這個問題,然後喜大普奔地找到了個奇技淫巧的**:
int log(intn)
if(n&0x0000ff00)
if(n&0x000000f0)
if(n&0x0000000c)
if(n&0x00000002)
return
result;
}
git 奇技淫巧
例如 1.0.0 git tag a 1.0.0 m 1.0.0 版本的備註資訊.複製 git push origin tags 複製 例如 1.0.0 git tag d 1.0.0 複製 刪除遠端標籤需要先刪除本地標籤,再執行下面的命令 git push origin refs tags 1.0...
C 之奇技淫巧
typedef struct data 0 pdata 0 typedef struct data 1 pdata 1 結構體data 0與data 1在性質上沒有什麼不同,它們的size是相等的,都是8.但在用法上有很大區別。例 pdata 0 stack0 pdata 0 malloc max ...
c 的奇技淫巧
關於陣列 數論演算法技巧 stl其他 while scanf d d n,m eof 等價於 while scanf d d n,m 2 前者eof為檔案結束符,較保險 後者 後的數字為輸入的變數的個數 不能只寫while scanf d d n,m 這樣無法結束讀入 wwq大佬教的,希望我不要和他...