浮點二分
四個運算子
與 &:只有x,y都是1的時候,運算結果才是1,其餘為0
或 |:x,y只要有乙個為1,結果都為1
非 !:如果x是0,!x=1,x是1的話,運算結果是0
異或 ^:x ^ y相同時0,不同是1
整形,分為有符號整型和無符號整型
int是32位二進位制
有符號整型中判斷正負看最高位數字,0為正數,1為負數
比如: 1:00000…01 而 -1:10000…01
正數的反碼等於原碼。
如3的原碼為0011,反碼為0011
負數的反碼:符號位不變,數值位按位取反;
如-3的原碼為1011,而他的反碼為1100,最高位為符號位,不取反。
正數的補碼等於原碼
負數的補碼等於其反碼加一
當整形進行左移:運算子為<<,按運算數的二進位制整體左移指定位數。
丟棄最高位,0補最低位。
相當於乘以2的n次方。
比如(1)00000001左移一位,變為(2)00000010,再左移一位,變為(4)00000100。
右移時:運算子為》,是算術右移不是邏輯右移,相當於刪除個位數,補乙個最高位,補的是最高位,正數補1,負數補0。
相當於除以2的n次方。
可將上例反著看。
浮點二分相比整數二分考慮的問題較少,整數二分要在mid後加1,若不加1,令l=r-1,結果仍為l,陷入死迴圈。
但浮點二分需注意:
1.浮點數不可判等,精度問題。
2.若保留n位小數,一般精度設為1e(-n-2)位。
模板
bool
check
(double x)
double
bsearch_3
(double l,
double r)
return1;
}
待補充。。。。。。 二分 整數二分和浮點數二分
一定是單調的才可以二分。找中間點 判斷是否滿足check函式 此函式需要自己根據題意調整,假設紅色區域為滿足check函式,說明mid在紅色區域內,此時要在mid到r之間找,l mid,否則r mid 1。由於此時l mid 所以中間點應為 l r 1 2 中間點mid l r 2 mid l r ...
浮點數二分
2 浮點數二分 模板 浮點數二分演算法模板 模板題 acwing 790.數的三次方根 bool check double x double bsearch3 double l,double r return l acwing790.數的三次方根 給定乙個浮點數n,求它的三次方根。輸入格式 共一行,...
整數二分和浮點數二分
注意點 1.有單調性一定可以二分,二分不一定需要單調性 2.二分本質 找到一種性質,將乙個區間一分為二,一部分滿足性質,另一部分不滿足性質,通過二分找到兩部分的邊界 3.二分一定有解,即能夠找到性質的邊界。無解通常跟題目有關。4.浮點數二分 精度足夠小時結束迴圈 或者 直接迴圈100次 while ...