【三分查詢求單峰函式的最值】 ZOJ 3386 Trick or Treat
題目大意是:在一個平面上有N個點,每個點的座標已經給出,現在要求在X軸上找一個點,使得這個點到所有點中最大的距離最小。
分析:我們設這個點為X0,所求的距離為F(x),那麼對於所有的 X < X0 和 X > X0 都有F(x) > ans,即實際上這個函式是已X0為最小值,兩邊
都是單調遞增或者遞減的,因此我們可以三分查詢找出這個最值的座標。總複雜度O(n*logn).
PS:這是第一次寫三分,之前竟然從沒寫過Orz...
相關推薦
【三分查詢求單峰函式的最值】 ZOJ 3386 Trick or Treat
題目大意是:在一個平面上有N個點,每個點的座標已經給出,現在要求在X軸上找一個點,使得這個點到所有點中最大的距離最小。 分析:我們設這個點為X0,所求的距離為F(x),那麼對於所有的 X < X0 和 X > X0 都有F(x)
#三分法判斷單峰函式最值#附加例題LA 5009
在白書上學到的有趣的知識。 單峰函式 即 先嚴格遞增再嚴格遞減 或 先遞減再遞增的函式 三分法: 取區間[L,R]兩個三分點m1,m2. 比較兩處的函式值,縮小範圍,繼續三分直到找出優解。 如下圖所示: 這是一個下凸的函式,我們要找最小值
三分法求單峰函式極值
模板,注意精度一般為1e-6,1e-8跟1e-10用的較少。double three_devide(double l, double r) { double left = l, right = r,mid,midmid; while(left + esp &
三分法求單峰(單谷)函式極值
what is 三分法 對於二分,相信你一定十分熟悉。就是在一個具有單調性序列上查詢你所需要的數字。由於其單調性,你每一次在查詢是就可以將規模縮小一半,大致就是: 1.假設這個數列單調遞增 2.維護一個區間左端點\(l\),區間右端點r和中間點\(mid\) 3.如果\(mid\)比想要的值小,則左邊肯定
YT14-HDU-三分查詢求F(x)的最小值
Problem Description Now, here is a fuction: F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100) Can you find the minimum value wh
二分法求單峰函式最大值
#include <iostream> #include <boost/timer/timer.hpp> #include <ctime> #include <set> using namespace boost::timer
zoj 3386 Trick or Treat 求x軸上一點到各點的最大值中的最小值 點到線段距離 三分
Trick or Treat -------------------------------------------------------------------------------- Time Limit: 5 Seconds Memory Limit: 6
【演算法設計與資料結構】三分法:求單峰函式的極值
介紹 三分法的思路與二分法很類似,不過其用途沒有那麼廣泛,主要用於求單峰函式的極值。 示例程式碼 void Solve() { double left, right, m1, m2,
2018-3-23論文一種新型智慧演算法--狼群演算法(筆記三)實驗分析單峰,多峰,可分和不可分函式
表中“U”表示此函式為單峰函式(Unimodal):也就是函式在定義域中只有一個全域性最優解,沒有區域性最優解(區域性極值)“M”為多峰函式(Multimodal):擁有多個區域性極值(是隻有一個全域性最優解??)易陷入區域性最優解以及產生區域性震盪“S”為可分函式(Sepa
【codeforces 617E XOR and Favorite Number】【莫隊分塊】【多次查詢求區間[l,r]中區間異或等於k的子區間個數】
【連結】 【題意】 給定一個數組,多次查詢,問區間l,r中有多少個子區間滿足區間異或為k 【思路】 查詢很大,意味著每次回答的時間複雜度不能太大。對於本題,我們可以維護一個字首異或,sum[i],區間[a,b]異或為k等價於sum[a-1]^sum[b]=k,假如
【三分/函式先減後增/先增後減】 Strange fuction HDU基礎04二分法
Problem DescriptionNow, here is a fuction: F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100)Can you find the minimum value when x
【三分】POJ - 3737 R - UmBasketella
POJ - 3737 R - UmBasketella In recent days, people always design new things with multifunction. For instance, you can not only use cell
【三分入門】HDU - 4717 Q - The Moving Points
Q - The Moving Points HDU - 4717 There are N points in total. Every point moves in certain direction and certain speed. We want to know a
【三分】【貪心】TCO2016R1B SettingShield
題意: 分析: 很顯然,以第一種方式的使用次數為自變數,以第二種方式的使用次數為因變數,一定是一個不上升函式。 換言之,已知f(x)為不下降函式,通過神奇的證明發現:f(x)+x為單谷函式。 所以。。。三分就行了第一種方式的使用次數就行了。。 求總方案可以用貪心的思想
演算法優化(1):基礎知識-凸集,單峰函式,擬凸函式與凸函式,函式凹凸性定義
本文筆記介紹我最近學習的演算法優化的基礎知識,有: 最優化問題的一般形式 約束問題的分類及形式 優化問題的分類 單峰函式(Unimodal function)的定義 擬凸函式(Quasiconvex function)的定義
三分演算法 —(解決凸凹函式的最值)
我們都知道 二分查詢 適用於單調函式中逼近求解某點的值。 如果遇到凸性或凹形函式時,可以用三分查詢求那個凸點或凹點。 下面的方法應該是三分查詢的一個變形。 如圖所示,已知左右端點L、R,要求找到白點的位置。 思路:通過不斷縮小 [L,R] 的範圍,無限逼近白點
查詢-二分查詢、三分查詢
二分查詢的查詢過程是: 每輪與有序區間的中間元素進行比較,若相等則返回當前元素位置。若被查詢元素大於中間元素,則到右側區間查詢,若查詢元素小於中間元素,則到左側區間查詢。 不斷重複前序查詢過程,或者待查詢區間失效。 輸入:表的長度,表中各個元素。要查詢的表元素。 輸出
二分與三分查詢模板
可參考https://wenku.baidu.com/view/3f0805820740be1e650e9a8c.html 二分查詢 a[] 是有序的 成升序或降序 int find(int a[])//假定是在0到100之間搜尋 l取最左邊 r 取最右邊
三分查詢的時間複雜度分析
在網上搜索了一下有關三分查詢時間複雜度分析的。有人說是O(3log3(n)),但是實驗中三分比二分更耗時,所以他們就認為不能迷信時間複雜度。我現在糾正一下(僅個人分析,供網友參考): 1.二分查詢的時間複雜度:因為每次都是折半,可以構造一顆遞迴樹,共lo
查詢演算法之三分查詢
三、具體實現 const double EPS = 1e-10; double calc(double x) { // f(x) = -(x-3)^2 + 2; return -(x-3.0)*(x-3.0) + 2; } double ternary