[模板]三分法
模板第二彈
題目選自:Luogu P3382
顯然三分。
標題就是三分。
先給個程式碼。
每次都給那麼長的程式碼,好像有點不太好,所以這次只給主程式碼(想要前面的很有意義莫名其妙的程式碼的可以翻我以前的部落格)。
double l,r,g[14],_1,_2;
int n;
#define eps 1e-7
double f(double x)
{
double y=g[0];
fr(i,1,n)
y+=g[i]*pow(x,i);
rt y;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("" ,"r",stdin);
freopen("","w",stdout);
#endif
n=read();
scanf("%lf%lf",&l,&r);
fd(i,n,0)
scanf("%lf",&g[i]);
while(l+eps<r)
{
_1=(l+l+r)/3;
_2=(r+_1)/2;
if(f(_1)<=f(_2))
l=_1;
else
r=_2;
}
printf("%.5lf" ,l);
rt 0;
}
可以參考一下:
注:
#1:
#2
#3
#4
#5
eps
解釋:
#1
將mid1,mid2 設定為l,r 的兩個三分點
#2
判斷兩點函式值大小
#3
判斷l,r 值是否不足夠接近(區間是否足夠大)
#4
捨去[l,mid1)
#5
捨去(mid2,r]
eps
可以看做處理精度的標準
思路大概清晰了一些吧。
來梳理一下:
1. 該搞什麼初始化就搞什麼初始化
2. 重複執行3~5,直到精度足夠
3. 算出等分點
4. 分別求出亮等分點的函式值
5. 比較,並做相應處理(看是舍小還是舍大)
6. 得出結果
以上就是本部落格的精華部分,下期部落格,再見。
最後,祝大家:
rp=(unsigned long long)-1
相關推薦
[模板]三分法
模板第二彈 題目選自:Luogu P3382 顯然三分。 標題就是三分。 先給個程式碼。 每次都給那麼長的程式碼,好像有點不太好,所以這次只給主程式碼(想要前面的很有意義莫名其妙的程式碼的可以
三分法(洛谷3382 【模板】三分法)
printf log 含義 三分 tps ans 區間 bits int 如題,給出一個N次函數,保證在範圍[l,r]內存在一點x,使得[l,x]上單調增,[x,r]上單調減。試求出x的值。 輸入格式: 第一行一次包含一個正整數N和兩個實數l、r,含義如題目描述所示。
【luogu 3382】【模板】三分法
include 表示 時空 return 三分 %d color upload printf 題目描述 如題,給出一個N次函數,保證在範圍[l,r]內存在一點x,使得[l,x]上單調增,[x,r]上單調減。試求出x的值。 輸入輸出格式 輸入格式: 第一行一次包含一個
[洛谷P3382]【模板】三分法
esp ace print 註意 兩個 分法 ont define nbsp 題目大意:給出一個N次函數,保證在範圍[l,r]內存在一點x,使得[l,x]上單調增,[x,r]上單調減。試求出x的值。 解題思路:三分法。像我這種什麽函數都不知道的,只知道要三分。取兩個&ld
洛谷 P3382 【模板】三分法
href con fine pla div cstring new toolbar lba P3382 【模板】三分法 題目描述 如題,給出一個N次函數,保證在範圍[l,r]內存在一點x,使得[l,x]上單調增,[x,r]上單調減。試求出
luogu3382【模板】三分法
algorithm namespace sca ring sin string 內存 AS CP 給出一個N次函數,保證在範圍[l,r]內存在一點x,使得[l,x]上單調增,[x,r]上單調減。試求出x的值。 看代碼即可。 #include <cstdio>
#10013 曲線 (三分法模板題)
ase ext namespace lin str scrip sel nts otto 【題目描述】 明明做作業的時候遇到了 n 個二次函數 S?i??(x)=ax?2??+bx+c,他突發奇想設計了一個新的函數 F(x)=max{Si(x)},i=1…n。 明
P3382 【模板】三分法
const tdi 好的 分法 pri cst max 。。 模擬退火 菜雞刷模板系列。。。 這道題其實是可以二分的,但是有更好的算法,叫做三分。 三分這種算法用於求單峰函數的最大值或者最小值。 算法思想就是弄\((l, r)\)區間的兩個三等分點,然後來縮小範圍。 因為這
三分法及模板
模板題:洛谷 \(P3382\) 給出一個 \(N\) 次函式,保證在範圍 \([l,r]\) 記憶體在一點 \(x\) ,使得 \([l,x]\) 上單調增,\([x,r]\) 上單調減。試求出 \(x\) 的值。 好的,三分就是用來求這種單峰函式的最值 具體求法: 與二分很像,先把答案鎖定在一個區間 \
三分法模板講解
三分查詢 我們都知道 二分查詢 適用於單調函式中逼近求解某點的值。 如果遇到凸性或凹形函式時,可以用三分查詢求那個凸點或凹點。 下面的方法應該是三分查詢的一個變形。 如圖所示,已知左右端點L、R,要求找到白點的位置。 思路:通過不斷縮小 [L,R]
【模板】三分法 (模板題:洛谷P3382)
題目描述 如題,給出一個N次函式,保證在範圍[l,r]記憶體在一點x,使得[l,x]上單調增,[x,r]上單調減。試求出x的值。 輸入輸出格式 輸入格式: 第一行一次包含一個正整數N和兩個實數l、r,含義如題目描述所示。 第二行包含N+1個實數,從高到低依次表示該
洛谷P3382 【模板】三分法
題目連結 方法1 就是三分的模板之前轉載過了就不寫了 不過求多項式有兩種效率不一樣的方法可以作為參考; //普通的求多項式 /*double F(double x){ double f=0; for(int i=n;i>=0;i--){
三分法模板
double solve(double MIN,double MAX) { double Left, Right; double mid, midmid; double mid
三分法learning
二分法 分享 最值 函數 模板題 -1 sin ont clu 三分法和二分法有些類似,二分處理的是遞增/減的函數,而三分處理的是先遞增後遞減(或相反)的函數的最值。 int lm=l+(r-l)/3,rm=r-(r-l)/3; 如上圖,lm<rm,則函數最
[日常摸魚]三分法
++ inline lin div const 今天 res 2.0 scan 翻到一個三分法的模板發現沒有寫掉…今天幹脆寫掉算了…(luogu3382) 跟二分基本差不多… #include<cstdio> typedef double dl; const
三分法搜索
was mac span else wid ima 排序 water lin 二分法適用於求單調的時候用的,就比如說排序好的數組,那是遞增的或者遞減的。如果像出現了非單調函數那樣的怎麽求它的最值呢? 二分法早就失去了他的意義了。不過還是可以用三分法來實現的,就是二分中再
[LuoguP1883]函數 三分法
mat 三個點 while pan namespace pri cst abs 一個 三分法的模板,一直提交,一直WA 結果,今天把精度判斷從l-r>=t改成 fabs(F(l)-F(r))>=t ,過了三個點,再將 \(t\) 改成 \(10^{-7}\) 就
【數學】三分法
Definition 當一個函式\(f(x)\)滿足在區間在區間\([l,r]\)內有且僅有一個\(x~\in~[l,r]~,~s.t.~~f(x)\)在\([l,x]\)內單調嚴格遞增,在\([x,r]\)內單調嚴格遞減,則說\(f(x)\)在\([l,r]\)內是一個單峰函式,求出單峰點\(x\)的演算
三分法求單峰(單谷)函式極值
what is 三分法 對於二分,相信你一定十分熟悉。就是在一個具有單調性序列上查詢你所需要的數字。由於其單調性,你每一次在查詢是就可以將規模縮小一半,大致就是: 1.假設這個數列單調遞增 2.維護一個區間左端點\(l\),區間右端點r和中間點\(mid\) 3.如果\(mid\)比想要的值小,則左邊肯定
[SCOI2010]傳送帶 三分法
[SCOI2010]傳送帶 LG傳送門 三分法模板。 關於為什麼可以三分,我選擇感性理解,有人證明了,總之我是懶得證了。 假設路徑是\(A \to E \to F \to D\),\(E\)和\(F\)分別是從\(AB\)到平面上的拐角和從平面上到\(CD\)上的拐角。首先三分\(E\)的位置,在此基