中石油训练赛 - Fermat‘s Optimization Problem(Java高精度运算+二分)
生活随笔
收集整理的這篇文章主要介紹了
中石油训练赛 - Fermat‘s Optimization Problem(Java高精度运算+二分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目大意:給出誤差函數?,現在給出 z 和 n,要求求出 x 和 y ,使得函數 F 的取值最小
題目分析:首先數據范圍是冪次級別的,1e5 的 10 次方,也就是 1e50 次方,需要用到大數,我用的是 java 的大數類
因為 x 和 y 的取值是 x < y < z,考慮枚舉 x 或 y ,然后二分去逼近另一個,這里我枚舉的是 y ,將絕對值去掉后,得到?,當 y 和 z 確定后,顯然這個函數具有單調性,將整個式子向 0 逼近即可,即求出??的最大的可行 x1,然后嘗試去更新答案,又因為絕對值是一個對稱函數,不能只考慮整體小于等于 0 的最大值,還需要考慮整體大于等于 0 的最小值才行,因為 x1 是整體小于等于 0 的最大值了,所以 x1 + 1 一定是大于等于 0 的最小值,不太會證明,感性理解一下吧,所以用 x1 和 x1 + 1 各自嘗試更新一下答案就好了
需要注意的點:
代碼:
?
?
總結
以上是生活随笔為你收集整理的中石油训练赛 - Fermat‘s Optimization Problem(Java高精度运算+二分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CodeForces - 1408F T
- 下一篇: 中石油训练赛 - Count the E