洛谷 P3382 模板 三分法 三分 二分

2022-02-13 02:45:09 字數 1723 閱讀 8838

p3382 【模板】三分法

題目提供者hansbug

難度普及/提高-

題目描述

如題,給出乙個n次函式,保證在範圍[l,r]內存在一點x,使得[l,x]上單調增,[x,r]上單調減。試求出x的值。

輸入輸出格式

輸入格式:

第一行一次包含乙個正整數n和兩個實數l、r,含義如題目描述所示。

第二行包含n+1個實數,從高到低依次表示該n次函式各項的係數。

輸出格式:

輸出為一行,包含乙個實數,即為x的值。四捨五入保留5位小數。

輸入輸出樣例

輸入樣例#1:

3 -0.9981 0.5

1 -3 -3 1

輸出樣例#1:

-0.41421

說明 時空限制:50ms,128m

資料規模:

對於100%的資料:7<=n<=13

樣例說明:

如圖所示,紅色段即為該函式f(x)=x^3-3x^2-3x+1在區間[-0.9981,0.5]上的影象。

當x=-0.41421時影象位於最高點,故此時函式在[l,x]上單調增,[x,r]上單調減,故x=-0.41421,輸出-0.41421。

/*

三分答案做法.

又學了一種三分答案姿勢.

mid=(2*l+r)/3,midmid=(l+2*r)/3.

常數要小很多...

(並不會證明).

*/#include

#define maxn 101

#define eps 1e-7

using

namespace

std;

double a[maxn],ans,l,r;

int n;

double check(double x)

return sum;

}void sanfen()

printf("%.5f",ans);

return ;

}int main()

/*

二分答案.

對函式求導,找f`(x)=0的點.

感覺這題資料應該都是單峰函式.

so 這個方法就ok了.

其實應該還要判斷該點兩側導函式是否變號

還有帶入端點值比較啥的.

懶沒寫~.

重要的是昨天剛預習的高二導數求凸形函式

今天就用上了 先讓我笑一會兒哈哈哈哈哈哈哈.

*/#include

#include

#define eps 1e-7

#define maxn 101

using

namespace

std;

double a[maxn],ans,l,r;

int n;

double check(double x)

return sum;

}void erfen()

printf("%.5f",ans);

return ;

}int main()

洛谷P3382 模板 三分法

題目鏈結 普通的求多項式 double f double x return f 秦九韶演算法從裡到外逐層計算一次多項式的值 double f double x 微積分求導 易證,若f x 0且f x dx f x dx 0則f x 必為原函式的乙個極大值或極小值 求駐點和零點 注 此題不含駐點 題目...

洛谷P3382 模板 三分法

如題,給出乙個n次函式,保證在範圍 l,r 內存在一點x,使得 l,x 上單調增,x,r 上單調減。試求出x的值。輸入格式 第一行一次包含乙個正整數n和兩個實數l r,含義如題目描述所示。第二行包含n 1個實數,從高到低依次表示該n次函式各項的係數。輸出格式 輸出為一行,包含乙個實數,即為x的值。四...

洛谷 P3382 模板 三分法

dcmp是個好東西 先增後減求極大。如果f lm 大於f rm 那麼答案在 l,rm 之間 否則答案在 lm,r 之間 在這裡,等於無所謂 如果先減後增求極小,則大於和小於交換。如果忘了,畫張函式影象,舉些特例就知道了 曾經錯誤 見注釋掉的 include include using namespa...