型別轉換坑死人

2022-10-09 21:24:24 字數 897 閱讀 5479

上週周賽沒寫出來第四題2234. 花園的最大總美麗值,這幾天找時間用雙指標+字首和的方法寫出來了,結果發現77個測試用例能過76個,只有乙個死活過不了,差距還挺大。

原因就是很簡單的溢位錯誤。在計算字首和的時候,由於需要計算排序後把前0 ~ i個花園的花的數量增加到第i + 1個的花園的水平所需要的花的數量,因此會有一項needs[i + 1] = flowers[i] * i - sum[i]的問題,其中needssum都是long,而flowersint,i毫無疑問也是int,因此就出現了問題:flowers[i]i的範圍都可以到\(10^5\),因此flowers[i] * i最大可以到\(10^\),這超出了int的表示範圍,結果溢位了。

將這兩個強制型別轉換為long,問題就解決了。

順便說一句,看題解的時候發現有人用二分法,心想這時間複雜度應該是排序\(o(n \times log(n))\)+計算字首和\(o(n)\)+查詢最優值\(o(log^2(n))\)肯定會比我現在用的排序\(o(n \times log(n))\)+計算字首和\(o(n)\)+雙指標遍歷\(o(n)\)的方法更快,結果發現不僅不快,反而更慢了。仔細一看,原來他是遍歷第乙個指標再用二分法找第二個指標,那麼這種方法查詢最優值環節的複雜度就提高到了\(o(n\times log(n))\)。。。

變數之間型別隱式轉換的坑

先問問自己,當初學c語言時,資料型別的轉換規則還記得嗎。一 強制轉換。如下面這種 int a 10 double b b double a 二 隱式轉換當運算子兩邊的資料型別不一致時,編譯器會主動進行資料型別轉換。轉換的規則是低型別像高型別轉換。隱式轉換方向如下圖所示。kmp演算法的坑 既然知道了資...

pow函式在強制型別轉換上的坑

對c語言pow函式的結果強制轉換成為int型別,有可能會產生乙個混亂的數 測試 include include intmain 執行結果 2147483647 1000000000000.0000002147483647 二十一億四千七百四十八萬三千六百四十七 是2147483646與2147483...

mysql型別轉換c 型別轉換 C 型別轉換

一 簡介 型別轉換 把資料從一種型別轉換另一種型別 我們要求等號兩邊參與運算子必須型別一致,如果不一致,滿足下列條件會發生自動型別轉換或者隱式型別轉換。1.兩種型別相容 例如 int和double 相容 都是數字型別 2.目標型別大於源型別 double int 顯示型別轉換 1.兩種型別相相容 i...