二分法求最值(HDU2899)

2021-08-29 05:20:54 字數 666 閱讀 8491

題目鏈結。題目就是給出乙個關於x的多項式,其中y是引數,給定任意的y求出這個多項式的最小值。我們首先觀察y的範圍就可以知道,x一定是在[0,100]之間的數字,求這個多項式的最小值,當然是當這個多項式對應的函式的導函式的等於零的時候最可以取得最值(當然這句話是很不嚴謹的,導函式等於零只是函式取最值的必要條件,但是在這個題中可以這麼說)。我們可以首先對這個函式求導,求導之後二分出零點,帶入原方程就可以了。

#include#include#define ll long long

using namespace std;

const double ebp = 1e-6;

double fun(double x)

double ans(double x,double y)

double solve(double y)

return r;

}int main()

} return 0;

}

當然了,這個題目其實還是有一些特殊的。這是乙個具有峰值的函式,我們要做的就是求出這個峰值,對於這種問題,其實我們有專門三分法就可以解決這個問題。三分的思想和二分是一樣的,不過是在區間中多插入了乙個點。通過比較這兩個點的函式值,逐漸的縮小區間直到逼近峰值。這裡只是簡單的介紹思想,**實現就不給出了。(因為我覺得還是二分+導數好用,嘿嘿)。

hdu 2899 數學基礎 二分

題意 給了你乙個函式,然後給了你x的變化範圍0到100,讓你求出函式的最小值。分析 它讓你求的是函式的最小值,所以我們可以先對函式求導,得到的導數就可以判斷函式的單調性了,求出導數後,我們發現如果函式的導數是x越大所求的的導數也就越大,當導數一直為負數時,函式是單調遞減的 當導數開始是負數,然後是正...

hdu 1025 二分法求LIS

題目給出兩個序列,兩個序列間有邊相連,我們要選出不交叉的邊,使得所選的邊最多 我們發現,如果我們對其中乙個序列從小到大排序的話,這個問題就變成了求另乙個序列的最長上公升子串行的問題。由於這個題目的資料比較大,一般的求最長上公升子串行的方法是n方的,顯然不能滿足題目的要求,我們建立乙個陣列g,g i ...

二分法求函式極大值

題目描述 這棵函式是n次函式,經過觀察發現,在閉區間 l,r 內函式存在乙個極大值點,請求出這個極大值點x。輸入格式 第一行,乙個正整數n和兩個實數l r,表示閉區間範圍。第二行,n 1個實數,從左到右依次表示函式的係數。輸出格式 輸出x的值,四捨五入保留5位小數。輸入樣例 1 3 0.9981 0...