麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

ZJOI 2008 瞭望塔 三分法

2019-11-10 19:53:05
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

題目鏈接:bzoj點(diǎn)我:-) 洛谷點(diǎn)我:-)

題目描述: 致力于建設(shè)全國(guó)示范和諧小村莊的H村村長(zhǎng)dadzhi,決定在村中建立一個(gè)瞭望塔,以此加強(qiáng)村中的治安。 我們將H村抽象為一維的輪廓。如下圖所示 這里寫(xiě)圖片描述 我們可以用一條山的上方輪廓折線(x1, y1), (x2, y2), …. (xn, yn)來(lái)描述H村的形狀,這里x1 < x2 < …< xn。瞭望塔可以建造在[x1, xn]間的任意位置, 但必須滿足從瞭望塔的頂端可以看到H村的任意位置。可見(jiàn)在不同的位置建造瞭望塔,所需要建造的高度是不同的。為了節(jié)省開(kāi)支,dadzhi村長(zhǎng)希望建造的塔高度盡可能小。 請(qǐng)你寫(xiě)一個(gè)程序,幫助dadzhi村長(zhǎng)計(jì)算塔的最小高度。

輸入格式: 輸入文件tower.in第一行包含一個(gè)整數(shù)n,表示輪廓折線的節(jié)點(diǎn)數(shù)目。接下來(lái)第一行n個(gè)整數(shù), 為x1 ~ xn. 第三行n個(gè)整數(shù),為y1 ~ yn。

輸出格式: 輸出文件tower.out僅包含一個(gè)實(shí)數(shù),為塔的最小高度,精確到小數(shù)點(diǎn)后三位。

思路: 首先,我們發(fā)現(xiàn)把每段輪廓線看作一條直線,那么所有直線左邊的公共部分就是瞭望塔最終應(yīng)該在的位置范圍,樣例如圖: 這里寫(xiě)圖片描述 想到這里,半平面交可做了。

接下來(lái),考慮兩個(gè)相鄰的端點(diǎn)x, x+1,可以發(fā)現(xiàn)它們之間的那一段答案是單峰的,所以用三分法解決即可。 單峰性的證明: 當(dāng)我們討論瞭望塔的位置在 x 和 x+1 之間時(shí) , 這一段區(qū)間上方的瞭望塔區(qū)間一定為一個(gè)下凸的單峰,可以分類(lèi)討論x至x+1的情況,可以發(fā)現(xiàn)不管是上升下降還是平的,答案都是一個(gè)單峰

(稍嚴(yán)謹(jǐn)?shù)淖C明:當(dāng)我們討論瞭望塔的位置在 i 和 i+1 之間時(shí) , 其他的直線可以組成一個(gè)下凸的半平面 , 將整個(gè)圖形旋轉(zhuǎn)使得直線水平 , 可知下凸的半平面仍保持其性質(zhì)。 那么瞭望塔的高度在此線段上保持單峰性)

感想: 三分真神奇。。 但是。還是要碼一碼半平面交的。。畢竟。。沒(méi)寫(xiě)過(guò)。。

代碼

//miaomiao 2017.2.8#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>using namespace std;#define For(i, a, b) for(int i = (a); i <= (int)(b); i++)#define N (300+5)#define eps 1e-9int n;double x[N], y[N], ret, len;inline double calc(int i, double xi){ ret = 0, len = y[i]+(y[i+1]-y[i])/(x[i+1]-x[i])*(xi-x[i]); For(j, 1, n){ if(i==j || i+1==j) continue; int a = j+(j<i? 1: -1); double h = y[j]+(y[a]-y[j])/(x[a]-x[j])*(xi-x[j]); ret = max(ret, h-len); } return ret;}int main(){ scanf("%d", &n); For(i, 1, n) scanf("%lf", &x[i]); For(i, 1, n) scanf("%lf", &y[i]); double ans = 1.0*(1e20); For(i, 1, n-1){ double lm, rm, mid, L = x[i], R = x[i+1]; while(fabs(R-L) > eps){ mid = (R-L)/3.0; lm = L+mid, rm = R-mid; if(calc(i, lm) > calc(i, rm)) L = lm; else R = rm; } ans = min(ans, calc(i, L)); } if(n == 1) ans = 0;
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 三人弄娇妻高潮3p视频 | 亚洲成人免费影视 | 免费一级特黄做受大片 | 91色综合综合热五月激情 | 国产黄色一级大片 | 久久精品国产99国产精品亚洲 | 精品无码一区在线观看 | 国产一级小视频 | 久久色伦理资源站 | 免费黄色入口 | 视频一区二区三区免费观看 | 国产精品亚洲yourport | 成人毛片免费在线 | 色婷婷tv | 国产亚洲精品美女久久久 | 久久国产91 | 无遮挡一级毛片视频 | 久久精品九九 | 久久伊 | 中文区永久区 | 国产一区二区免费在线观看 | 黄色片免费看看 | 国产1区2区3区中文字幕 | 成人免费视频视频在线观看 免费 | 蜜桃传媒视频麻豆第一区免费观看 | 国产精品国产三级国产在线观看 | 蜜桃成品人免费视频 | 202z中文字幕第一页 | 欧美黄色片免费看 | 午夜在线观看视频网站 | 国产污污视频 | 免费色片| 丰满年轻岳中文字幕一区二区 | 一级毛片在线免费观看 | 欧日韩在线视频 | 亚洲视频观看 | fc2国产成人免费视频 | 日本网站一区二区三区 | 欧美交在线 | 欧产日产国产精品99 | 免费a视频 |