洛谷 P1883 函式

2022-04-04 15:54:15 字數 1042 閱讀 5204

給定n個二次函式f1(x),f2(x),...,fn(x)(均形如ax^2+bx+c),設f(x)=max,求f(x)在區間[0,1000]上的最小值。

輸入格式:

輸入第一行為正整數t,表示有t 組資料。

每組資料第一行乙個正整數n,接著n行,每行3個整數a,b,c ,用來表示每個二次函式的3個係數,注意二次函式有可能退化成一次。

輸出格式:

每組資料輸出一行,表示f(x)的在區間[0,1000]上的最小值。答案精確到小數點後四位,四捨五入。

輸入樣例#1: 複製

2

12 0 0

22 0 0

2 -4 2

輸出樣例#1: 複製

0.0000

0.5000

【資料範圍】

t < 10, n ≤ 10000,0 ≤ a ≤ 100,|b| ≤ 5000, |c| ≤ 5000 前50%資料n ≤ 100

/*

最小值一定在交點處取得,如果列舉交點,

是o(n^2)的複雜度,應該能過50%的點。

ac思路:觀察影象,因為a都是大於等於0的,所以f(x)的

影象是乙個特殊的凹函式,然後這個題目就變成

了求函式最值,然後就可以想到用三分法。

*/#include

#include

#include

#include

using

namespace

std;

intt,n;

double

l,r,mid1,mid2;

double a[10001],b[10001],c[10001

];double f(double aa,double bb,double cc,double

x)double f(double

x)int

main()

printf(

"%.4lf\n

",f(l));

}}

P1883函式題解

這道題是說在 0,1000 中找到乙個值,使得在所有函式中這個值所對應的最大值最小 可能描述的不清楚,詳細看題目 通過畫圖發現,如果將最大值連線起來的話,那麼所有的點將連成乙個類似二次函式的影象,於是我們可以採用三分的方法,如果進行暴力列舉的話會超時,所以使用三分法。為什麼不用二分呢?二分是不能夠判...

洛谷 1883 函式 三分法

三分法的模板,一直提交,一直wa 結果,今天把精度判斷從l r t改成fabs f l f r t,過了三個點,再將 t 改成 10 就 ac 了。這給我乙個十分重要的啟示 精度問題十分重要!include include include using namespace std const int ...

洛谷 P2085 最小函式值

有n個函式,分別為f1,f2,fn。定義fi x ai x 2 bi x ci x n 給定這些ai bi和ci,請求出所有函式的所有函式值中最小的m個 如有重複的要輸出多個 輸入格式 輸入資料 第一行輸入兩個正整數n和m。以下n行每行三個正整數,其中第i行的三個數分別位ai bi和ci。ai 10...