每日c/c++題 備戰藍橋杯(洛谷P3382 三分法求極值詳解)

洛谷P3382 三分法求極值詳解

題目描述

P3382 三分法 要求在給定區間內尋找一個多項式函數的最大值點。題目保證函數在區間內先嚴格遞增后嚴格遞減(單峰函數),適合使用三分法求解。

算法原理

三分法核心思想

對于單峰函數,在區間 [ l , r ] [l, r] [l,r] 內每次選取兩個試探點 m i d 1 mid1 mid1 m i d 2 mid2 mid2

  • f ( m i d 1 ) < f ( m i d 2 ) f(mid1) < f(mid2) f(mid1)<f(mid2),說明極值點在 ( m i d 1 , r ] (mid1, r] (mid1,r] 區間
  • f ( m i d 1 ) > f ( m i d 2 ) f(mid1) > f(mid2) f(mid1)>f(mid2),說明極值點在 [ l , m i d 2 ) [l, mid2) [l,mid2) 區間
  • 通過不斷縮小搜索區間,最終逼近極值點

代碼解析與優化

原始代碼分析

用戶提供的代碼存在幾個可優化點:

  1. 變量命名不清晰esp 數組應命名為 coeff 更直觀
  2. 精度控制方式:固定比較 mid±0.000001 可能不夠靈活
  3. 函數返回值設計fun 函數返回 0/1 的布爾邏輯可優化

優化后代碼

#include <bits/stdc++.h>
using namespace std;int N;
double l, r;
double coeff[15] = {0};  // 存儲多項式系數// 計算多項式在x處的值
double calculate(double x) {double res = 0.0;double x_pow = 1.0;  // 緩存x的冪次for (int i = 0; i <= N; ++i) {res += coeff[i] * x_pow;x_pow *= x;}return res;
}int main() {cin >> N >> l >> r;for (int i = N; i >= 0; --i) {cin >> coeff[i];  // 系數按降序輸入}const double EPS = 1e-7;  // 精度控制while (r - l > EPS) {double mid1 = l + (r - l) / 3;double mid2 = r - (r - l) / 3;if (calculate(mid1) < calculate(mid2)) {l = mid1;} else {r = mid2;}}printf("%.5lf\n", l);return 0;
}

關鍵優化點說明

  1. 函數計算優化

    • 使用迭代計算代替 pow 函數,避免浮點精度問題
    • 時間復雜度從 O(N^2) 優化到 O(N)
  2. 精度控制改進

    • 引入 EPS 常量統一控制精度
    • 終止條件改為 r - l > EPS,更符合三分法收斂特性
  3. 三分點選取策略

    • 采用經典的三分點選取方式:
      mid1 = l + (r - l)/3
      mid2 = r - (r - l)/3
      
    • 保證每次迭代區間縮小比例恒定

注意事項

  1. 單峰性驗證:題目保證函數為單峰函數,實際應用中需先驗證
  2. 端點處理:當極值點恰好位于區間端點時,需額外判斷
  3. 系數輸入順序:注意題目要求系數按降冪輸入(與常規存儲方式不同)

復雜度分析

  • 時間復雜度:O(N·log(1/ε)),其中 ε 為精度要求
  • 空間復雜度:O(N),僅需存儲多項式系數

擴展思考

  1. 與二分法的區別

    • 二分法要求函數單調,三分法要求單峰
    • 三分法每次迭代減少 2/3 的搜索空間
  2. 應用場景

    • 概率分布中的最大似然估計
    • 經濟學中的效用最大化問題
    • 工程優化問題中的參數調優

總結

三分法是解決單峰函數極值問題的有效方法,通過不斷縮小搜索區間逼近極值點。本題實現時需特別注意:

  1. 浮點數計算的精度控制
  2. 多項式計算的效率優化
  3. 輸入輸出的格式要求

掌握三分法的實現原理,可以推廣到更高維度的優化問題(如網格搜索法),是算法競賽和工程實踐中常用的數值優化技巧。

附:測試樣例
輸入:
3 -5 5
1 -8 22 -24 8
輸出:
3.00000

該樣例對應多項式 f ( x ) = x 3 ? 8 x 2 + 22 x ? 24 x + 8 f(x) = x^3 -8x^2 +22x -24x +8 f(x)=x3?8x2+22x?24x+8,其極大值點確實在 x=3 處。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82293.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82293.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82293.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[Windows] 一鍵實現重復工作自動化zTasker

zTasker&#xff0c;是一款定時&#xff5c;熱鍵&#xff5c;純粹的自動化任務神器。它支持超過100種任務類型&#xff0c;包括提醒、關機重啟、報時、擋屏休息、文件備份、音量調節、靜音等。用戶可以通過定時、CPU占用、文件夾監控、網速、快捷鍵等多種條件觸發任務。 簡單點…

Docker核心筆記

一、概述 1、架構 Docker容器基于鏡像運行,容器共享宿主機的內核,不會加載額外內核,通過Namespaces(環境隔離)和Cgroups(資源控制)實現隔離,Cgroups會限容器使用資源并控制優先級和統計數據。隔離后的容器僅包含應用所需的用戶態依賴 2、安裝 安裝先卸載再安裝,使用的yum…

2025年電工杯數學建模B題【垃圾運輸】原創論文分享

大家好呀&#xff0c;從發布賽題一直到現在&#xff0c;總算完成了2025年電工杯數學建模B題【垃圾運輸】完整的成品論文。 給大家看一下目錄吧&#xff1a; 目錄 摘 要&#xff1a; 一、問題重述 二&#xff0e;問題分析 2.1問題一 2.2問題二 2.3問題三 三、模型假設 …

[爬蟲知識] IP代理

相關實戰案例&#xff1a;[爬蟲實戰] 代理爬取&#xff1a;小白也能看懂怎么用代理 相關爬蟲專欄&#xff1a;JS逆向爬蟲實戰 爬蟲知識點合集 爬蟲實戰案例 引言&#xff1a;爬蟲與IP封鎖的攻防戰 對網絡爬蟲而言&#xff0c;遇到的一個較棘手的問題就是封IP&#xff1a;請…

計算機視覺---YOLOv1

YOLOv1深度解析&#xff1a;單階段目標檢測的開山之作 一、YOLOv1概述 提出背景&#xff1a; 2016年由Joseph Redmon等人提出&#xff0c;全稱"You Only Look Once"&#xff0c;首次將目標檢測視為回歸問題&#xff0c;開創單階段&#xff08;One-Stage&#xff09…

前端學習筆記element-Plus

【element-plus菜單】參數說明&#xff1a; active-text-color"#ffd04b"——激活顏色 background-color"#232323"——背景顏色&#xff08;29,160,176&#xff09; :default-active"$route.path"——配置默認高亮的菜單項 text-color"#f…

【Django DRF】一篇文章總結Django DRF框架

第一章 DRF框架基礎 1.1 DRF簡介 1.1.1 DRF定義與作用 1. 定義 DRF 即 Django REST framework&#xff0c;它是一個建立在 Django 基礎之上的強大且靈活的工具包&#xff0c;用于構建 Web API&#xff08;應用程序編程接口&#xff09;&#x1f60e;。簡單來說&#xff0c;…

如何解決 Python 項目安裝依賴報錯:ERROR: Failed to build installable wheels for some pyproject.toml based project

如何解決 Python 項目安裝依賴報錯&#xff1a;ERROR: Failed to build installable wheels for some pyproject.toml based projects 在使用 pip 安裝 Python 項目的依賴時&#xff0c;遇到類似如下的報錯信息&#xff1a; ERROR: Failed to build installable wheels for s…

使用f5-tts訓練自己的模型筆記

摘要 服務器都有了&#xff0c;這不得練練丹&#xff0c;有點說不過去啊。所以嘗試了從頭開始訓練一個模型&#xff0c;結果由于推理頁面好像有bug&#xff0c;不知道是不是失敗了&#xff0c;然后又嘗試微調一下模型。本篇文章主要記錄了三流調包俠嘗試煉丹過程中學習到的一些…

安全可控的AI底座:燈塔大模型應用開發平臺全面實現國產信創兼容適配認證

國產信創產品兼容適配認證是為了支持和推動國產信息技術產品和服務的發展而設立的一種質量標準和管理體系。適配認證旨在確保相關產品在安全性、可靠性、兼容性等方面達到一定的標準&#xff0c;以滿足政府和關鍵行業對信息安全和自主可控的需求。 北京中煙創新科技有限公司&a…

初識Vue【1】

1.什么是Vue&#xff1a; Vue (讀音 /vju?/&#xff0c;類似于 **view**) 是一套用于構建用戶界面的**漸進式框架**。與其它大型框架不同的是&#xff0c;Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關注視圖層&#xff0c;不僅易于上手&#xff0c;還便于與第三方庫或…

Jest入門

快速入門 Jest中文文檔 | Jest中文網 1.下載&#xff1a;npm install --save-dev jest 2.創建 sum.js 文件&#xff1a; function sum(a, b) { return a b; } module.exports sum; 3.創建sum.test.js 的文件 const sum require(./sum); test(adds 1 2 to equal 3,…

Spring Boot企業級開發五大核心功能與高級擴展實戰

前言 在企業級應用開發中&#xff0c;Spring Boot已成為事實上的Java開發標準。本文將從企業實際需求出發&#xff0c;深入剖析Spring Boot五大必用核心功能&#xff0c;并擴展講解三項高級開發技能&#xff0c;幫助開發者掌握構建健壯、高效、易維護的企業級應用的必備技術。…

2025電工杯數學建模B題思路數模AI提示詞工程

我發布的智能體鏈接&#xff1a;數模AI扣子是新一代 AI 大模型智能體開發平臺。整合了插件、長短期記憶、工作流、卡片等豐富能力&#xff0c;扣子能幫你低門檻、快速搭建個性化或具備商業價值的智能體&#xff0c;并發布到豆包、飛書等各個平臺。https://www.coze.cn/search/n…

LabVIEW開發FPGA磁聲發射應力檢測系統

工業級磁聲發射應力檢測系統&#xff0c;針對傳統設備參數固定、靈活性不足的痛點&#xff0c;采用 Xilinx FPGA 與 LabVIEW 構建核心架構&#xff0c;實現激勵信號可調、多維度數據采集與實時分析。系統適用于鐵磁性材料應力檢測場景&#xff0c;具備高集成度、抗干擾性強、檢…

Java IO流學習指南:從小白到入門

Java的IO&#xff08;Input/Output&#xff09;流是處理數據輸入和輸出的基礎。無論是讀取文件、寫入文件&#xff0c;還是通過網絡傳輸數據&#xff0c;IO流都無處不在。對于剛接觸Java的新手&#xff0c;理解IO流可能會有些困惑&#xff0c;但別擔心&#xff0c;今天我們將一…

【后端高階面經:微服務篇】1、微服務架構核心:服務注冊與發現之AP vs CP選型全攻略

一、CAP理論在服務注冊與發現中的落地實踐 1.1 CAP三要素的技術權衡 要素AP模型實現CP模型實現一致性最終一致性&#xff08;Eureka通過異步復制實現&#xff09;強一致性&#xff08;ZooKeeper通過ZAB協議保證&#xff09;可用性服務節點可獨立響應&#xff08;支持分區存活…

QNAP NEXTCLOUD 域名訪問

我是用docker compose方式安裝的&#xff0c;雖然不知道是不是這么個叫法&#xff0c;廢話不多說。 背景&#xff1a;威聯通container station安裝了nextcloud和lucky&#xff0c;lucky進行的域名解析和反代 先在想安裝的路徑、數據存儲路徑、數據庫路徑等新建文件夾。再新建…

高級SQL技巧:窗口函數與復雜查詢優化實戰

高級SQL技巧&#xff1a;窗口函數與復雜查詢優化實戰 開篇&#xff1a;數據庫開發中的挑戰 在現代企業級應用中&#xff0c;數據庫不僅是存儲數據的核心組件&#xff0c;更是處理復雜業務邏輯的重要工具。然而&#xff0c;隨著數據量和并發請求的不斷增長&#xff0c;傳統的S…

《STL--list的使用及其底層實現》

引言&#xff1a; 上次我們學習了容器vector的使用及其底層實現&#xff0c;今天我們再來學習一個容器list&#xff0c; 這里的list可以參考我們之前實現的單鏈表&#xff0c;但是這里的list是雙向循環帶頭鏈表&#xff0c;下面我們就開始list的學習了。 一&#xff1a;list的…