日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三分法+秦九昭算法

發布時間:2024/9/3 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三分法+秦九昭算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

三分法

$Daily English

神話是大眾的夢想,夢想是一個人的神話。
Myths are public dreams,dreams are private myths.


知識點:

  • 三分法
  • 秦九昭算法
  • 三分法模板

0x00 題目:

洛谷p3382:
https://www.luogu.com.cn/problem/P3382

0x01 三分法

問題:值序列構成的圖像具有凸性或凹性時 求解最值


解釋:
在[l,r]區間中找一個值x,使得f(x) = max。可以用三分法來求解這個x。
基本思想是:將[l,r]區間分成三段不斷逼近。區間分成三段所以需要確定兩個點。
這兩點我們習慣性把它們命名為:lmid,rmid。
這兩點的值很好確定:
左邊(lmid): l + 區間長度的1/3
右邊(rmid): r - 區間長度的1/3

tmp = (r - l) / 3.0;lmid = l + tmp;rmid = r - tmp;

如果f(lmid) < f(rmid):
那么lmid之前部分對求解的x沒有影響
所以此時可以更新:
l = lmid。
否則,更新:r = rmid。

如果理解不了,自己畫一個圖好好體會。


如果凸性或凹性圖像的方程是一個N次多項式,就要結合秦九昭算法來求解f(x)。即三分過程中,f(lmid) , f(rmid)具體的值要使用秦九昭算法來求解


0x02 秦九昭算法:

問題:求解N次多項式f(x)的值

原理:


0x03 解題代碼:

#洛谷p3382 # Ac_code:

#include <bits/stdc++.h> using namespace std; const double eps = 1e-6; const int N = 15; double a[N]; int n; double l,r;//秦九昭算法:求解N次多項式f(x)的值 double check(double x) {double res = a[n];for(int i = n-1; i >= 0; i--){res = res * x + a[i];}return res; } int main() {scanf("%d%lf%lf",&n,&l,&r);for(int i = n; i >= 0; i--){scanf("%lf",&a[i]);}//三分法:值序列構成的圖像具有凸性或凹性時求最值while(r-l > eps){double tmp = (r - l) / 3.0;double lmid = l + tmp;double rmid = r - tmp;if(check(lmid) < check(rmid)){l = lmid;}else{r = rmid;}}printf("%.5lf\n",l);return 0; }

總結

以上是生活随笔為你收集整理的三分法+秦九昭算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。