(hiho一下)三分·三分求極值
在之前的幾週中我們瞭解到二分法作為分治中最常見的方法,適用於單調函式,逼近求解某點的值。
但當函式是凸形函式時,二分法就無法適用,這時就需要用到三分法。
從三分法的名字中我們可以猜到,三分法是對於需要逼近的區間做三等分:
利用這個性質,我們就可以在縮小區間的同時向目標點逼近,從而得到極值。
接下來我們回到題目上,拋物線和點之間的距離可以簡單的用直線公式計算:
即d = min{sqrt((X - x)^2+(aX^2+bX+c-y)^2)}
該公式展開後為4次,需要採用求導等方法來求極值。對於計算機程式設計來說是很麻煩的一件事。
進一步觀察題目,我們可以發現根據帶入的X值不同,d的長度恰好滿足凸形函式。
而我們要求的最短距離d,正好就是這個凸形函式的極值。
那麼三分法不就正好可以用來解決這道題目了麼?
需要注意在解題過程中一定要想清楚如何劃分區間,我們求的各個變數到底是什麼含義。
另外,這道題還有一個小小的trick,在解決的時候請一定要小心。
相關推薦
(hiho一下)三分·三分求極值
在之前的幾週中我們瞭解到二分法作為分治中最常見的方法,適用於單調函式,逼近求解某點的值。 但當函式是凸形函式時,二分法就無法適用,這時就需要用到三分法。 從三分法的名字中我們可以猜到,三分法是對於需要逼近的區間做三等分: 我們發現lm這個點比rm要低,那麼我們要找的最小點一定在[left,rm]之間。如果
Hadoop學習之路(十七)MapReduce框架Partitoner分區
div get() 劃分 mapreduce ride 作用 程序 輸出 lin Partitioner分區類的作用是什麽? 在進行MapReduce計算時,有時候需要把最終的輸出數據分到不同的文件中,比如按照省份劃分的話,需要把同一省份的數據放到一個文件中;按照性別劃分
Hadoop學習之路(十八)MapReduce框架Combiner分區
類型 規則 比較 一個 學習 過程 key-value body 註意 對combiner的理解 combiner其實屬於優化方案,由於帶寬限制,應該盡量map和reduce之間的數據傳輸數量。它在Map端把同一個key的鍵值對合並在一起並計算,計算規則與reduce一致
高可用OpenStack(Queen版)集群-13.分布式存儲Ceph
queen file pass 端口號 dev 節點 成功 監聽 service 參考文檔: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide
FPGA-06-(任務01)設計一個三位二進位制減法計數器
module jianfaqi( RST,//復位端 CLK,//時鐘輸入端 Q,//計數輸出端 ); input RST; input CLK; &nbs
4. 免模型策略改進——蒙特卡洛(Monte-Carlo)和時序差分(Temporal-Difference)
other psi 動態 技術分享 獎勵 style 速度 src $1 針對馬爾科夫模型不完全已知,即轉移概率未知,不能全概率展開的情況,上一篇介紹了策略評估的方法,這一篇對應介紹策略改進的方法,分別是 針對每一個完整決策過程,先估計策略再改進策略的蒙特卡洛同策略學習方式
Linux kernel boot process——從真實模式(real mode)到保護模式(protected mode),再到分頁(paging)
本文簡要介紹X86-32架構下的Linux kernel被boot loader(如grub)載入到記憶體後,如何從最初的真實模式,切換到保護模式,並開啟分頁機制。本文不涉及boot loader如何將核心載入到記憶體,因為這是boot loader的事,跟
Linux kernel boot process——從真實模式(real mode)到保護模式(protected mode),再到分頁(paging) .
本文簡要介紹X86-32架構下的Linux kernel被boot loader(如grub)載入到記憶體後,如何從最初的真實模式,切換到保護模式,並開啟分頁機制。本文不涉及boot loader如何將核心載入到記憶體,因為這是boot loader的事,跟核
Spring學習(十八)Bean 的三種依賴注入方式介紹
依賴注入:讓呼叫類對某一介面實現類的依賴關係由第三方注入,以移除呼叫類對某一介面實現類的依賴。 接下來將詳細的向大家介紹Spring容器支援的三種依賴注入的方式以及具體配置方法: • 屬性注入方
《演算法競賽入門經典(第二版)》第三章 習題(1-5)
習題3-1 得分(UVa1585 Score) #include<iostream> #include<stdio.h> #include<string.h> using namespace std; int main(){
燈光照射,圓形探測類問題(解題報告)<分層差分><cmath取整>
radi 分層 bsp name min lock 前綴 pan str 題目描述 一個n*n的網格圖上有m個探測器,每個探測器有個探測半徑r,問這n*n個點中有多少個點能被探測到。 輸入輸出格式 輸入格式: (1<=r<n<=5000)
《一種策略融合的跨語言文本情感傾向判別方法》論文學習筆記(大一下)
建立 現象 資源 步驟 特征選擇 標簽 標註 障礙 協同 現象:因特網資源呈現多語言化和跨語言的特點,給普通用戶獲取非母語網絡信息造成障礙。 目標:整合多語言傾向信息,以通用的數據形式讓用戶了解多語言數據對某個對象的評價。 針對跨語言情感傾向分類任務,提出兩種跨語言
localStorage購物車(升級一下)
eight char return {} code tle hang oat let <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">
編程基本的命名規範(記錄一下)
約定 編程 png img ima 技術 描述 image 變量 1、命名規則約定: 2.匈牙利命名法: 變量名=屬性+類型+對象描述 2.1屬性命名規則 2.2關鍵字母組合 編程基本的命名規範(記錄一下)
three.js 入門指南(敷衍一下)
今天看了一本好書three.js,感覺特別適合我這種對three.js 瞭解不深的人。 其實要學習three.js,還有許多其他方面的知識要了解,例如如何繪製多邊形,如何繪製曲線,攝像機的一些基礎知識等等。 推薦一本老外的three.js指南 https://pan.baidu.com/
收到中軟國際的電話面試(分享一下)
星期四晚上投的簡歷,然後星期五晚上接到了面試通知,問我是不是做過jquery,我說是的。然後叫我明天去南京面試,我說明天來不及,我得先請假。約了下週一。 本來是這麼想的,面試前總是要看看面試題的,免得面試吃虧。想這周雙休正好在家中看面試題。儘量說的好點,工作半年,說實在的,
字串CryptoJS前臺加密,pycrypto後臺解密(備份一下)
最近我想做一個前臺加密,後臺解密的功能,網上找了好久都不怎麼好用。本人也不瞭解加密演算法,只有自己摸索。 寫完記錄一下 —————————————————————— 程式碼只是個例子,沒有前後臺互動 我用的是pycrypto需要安裝,我用的是pycrypto-2.6.1.t
如何不使用(a+b)/2這種方式,求兩個數的平均值?
第一種: 一個數右移一位等於一個數除以2 (a+b)>>1 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <windows.h> int main() { int a
c語言實現不使用(a + b) / 2這種方式,求兩個數的平均值
//不使用(a + b) / 2這種方式,求兩個數的平均值 解題思路: 1> 先判斷是奇數還是偶數; 2> 將a,b之和右移一位; 3
不使用(a+b)/2這種方式,求兩個數的平均值。
不使用(a+b)/2這種方式,求兩個數的平均值。 思路: 第一種:移位; (a+b)>>1 第二種 : a+((b-a)>>1) -->a+(b-a)/2 ----(a+b)/2 b+((a+b)>