1. 程式人生 > >hdu2899 (三分/二分/模擬退火)

hdu2899 (三分/二分/模擬退火)

題目大意: 求函式的最小值,y為給出的實數,x∈[0,100]

解法①:    首先x>=0可知,函式在定義域上為單峰凹函式,三分即可。

解法②:    對函式求導,當導函式為0時取得極值,發現導函式為增函式,二分即可。

解法③:    模擬退火可以求峰值函式最值,套用即可。

注意:精度噁心,解法①②eps最好開到1e-7,解法③開到1e-8

效率:

三分:

二分:


模擬退火:


程式碼:

相關推薦

hdu2899 (/二分/模擬退火)

題目大意: 求函式的最小值,y為給出的實數,x∈[0,100] 解法①:    首先x>=0可知,函式在定義域上為單峰凹函式,三分即可。 解法②:    對函式求導,當導函式為0時取得極值,發

2420 A Star not a Tree? 模擬退火

Luke wants to upgrade his home computer network from 10mbs to 100mbs. His existing network uses 10base2 (coaxial) cables that allow you to

bnu 51638 Air Hockey(+二分)(北師16校賽)

無聊的過河船同學和無聊的脹魚同學非常喜歡打桌上冰球(其實只是喜歡聽球碰撞時的聲音)。在無聊的一天,無聊的過河船同學想到了一個無聊的玩法:兩人同時將兩個球放桌面上,同時擊出,然後聽兩顆球撞在一起時的聲音。然而他們都對擊球的精確度把握得不是很好,所以這兩顆球並不一定能相撞。 現在假設桌面無限大,並且絕對光滑,給

Hdu 2899 Strange fuction(二分可做,模擬退火解法)

題意:計算F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100)的最小值 分析:求導發現0~100內為凹函式,那麼可以直接二分導數或者三分原函式, 這裡寫一下模擬退火的做法,每次左右找到較低函式值並轉移x,控制一下

2018 ACM-ICPC 南京站 D Country Meow 最小球覆蓋(模擬退火&)

//模擬退火 #include <iostream> #include<cstdio> #include<algorithm> #include<cstring

HDU的一些二分的一些題目(大部分模擬

大家如果對於二分和三分沒有把握的話可以多練練,我其他的部落格文章裡面也有關於二分和三分的一些解釋。Can you solve this equation?(HDU 2199)   Strange fuction(HDU 2899)    Pie(HDU 1969)    To

Toxophily-數論以及二分

ext content calc pad const sim post ++ sum G - Toxophily Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64

uva 1463 - Largest Empty Circle on a Segment(二分++幾何)

class tint str else if index.php typedef itemid abs topo 題目鏈接:uva 1463 - Largest Empty Circle on a Segment 二分半

HDU 2141(二分& _B題)解題報告

opened span print -c name tac str 報告 nlog 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2141 -------------------------------------------

牛客挑戰賽18th F Alice收集玩偶 二分

pbo fir const double 題目 sub item oar describe 轉載: https://blog.csdn.net/m0_38013346/article/details/80425938 題目描述 Alice是個小女孩,最近經常睡得很晚起得

分治 二分答案 未完結

連通 優化 kruskal算法 fence tom ESS 二分 找到 直接 分治,字面上的解釋是"分而治之",就是把一個復雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題……直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合並。分治法是很多

CodeForces - 1059D——二分/

題目 題目連結 簡單的說,就是作一個圓包含所有的點且與x軸相切,求圓的最小半徑 方法一 分析:求最小,對半徑而言肯定滿足單調性,很容易想到二分。我們二分半徑,然後由於固定了與X軸相切,我們對於每一個點,就可以算出這個點在圓上的時候圓與x軸相交的距離(其實就是圓心的x軸的範圍)。然後對每個點都可以求一個

金幣----拿模擬退火來做是不是有點過分了

題目描述 圓桌上坐著n個人,每人有一定數量的金幣,金幣總數能被n整除。每個人可以給他左右相鄰的人一些金幣,最終使得每個人的金幣數目相等。你的任務是求出被轉手的金幣數量的最小值。 輸入輸出格式 輸入格式: 第一行為整數n(n>=3),以下n行每行一個正整數,按逆時針順序給出每個人

二分(精度型別)

二分:傳送門 三分:傳送門 (注意,是五舍六入,不是四捨五入,在2018年10月23日前是這樣的) 話說一本通上不是有講嘛,做法自己看吧。。。(但是我太弱了,精度版看不懂QWQ)。 簡單講一下二分與三分吧。 二分:必須滿足單調性: 非增或非減就叫單調性(如果就好幾個數相同,

查詢-二分查詢、查詢

二分查詢的查詢過程是: 每輪與有序區間的中間元素進行比較,若相等則返回當前元素位置。若被查詢元素大於中間元素,則到右側區間查詢,若查詢元素小於中間元素,則到左側區間查詢。 不斷重複前序查詢過程,或者待查詢區間失效。 輸入:表的長度,表中各個元素。要查詢的表元素。 輸出

hdu2899:Strange fuction(模擬退火演算法)

Problem Description Now, here is a fuction:   F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <

快速冪,二分模板

//快速冪 long long Mood(long long a,long long b) { long long ans=1; a%=Mod; while(b) { if(b&1)//取二進位制最後一位 ,如果是一就進行下一步,是0 就跳過這一步

二分查詢模板

可參考https://wenku.baidu.com/view/3f0805820740be1e650e9a8c.html 二分查詢 a[] 是有序的 成升序或降序 int find(int a[])//假定是在0到100之間搜尋 l取最左邊 r 取最右邊

二分答案法、

#include <cstdio> #include <cmath> #include <cstring> #include <string> #include <iostream> #include <algorithm> using

HDU 4766 模擬退火(最小圓覆蓋) + 二分

#include <cstdio> #include <cstring> #include <cmath> #include <vector> #include <iostream> #include <al