給定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: 複製
212 0 0
22 0 0
2 -4 2
輸出樣例#1: 複製
0.00000.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...