2013程式設計之美 集會 三分

2022-05-10 03:46:05 字數 2021 閱讀 7976

通過這一體說說三分的做法。

題目列表 > 集會

時間限制: 2000ms 記憶體限制: 256mb

在一條河的一側,分布著 n 個村莊。這些村莊平日裡需要一些**往來,然而商人們來回走遍每一座村莊是非常辛苦的,於是他們決定每個月都在河邊舉行一次集會,大家都來集會上購買需要的物品。然而在集會地點的選擇上,大家卻有分歧,因為誰都不願意集會的地點離自己村莊非常遠。經過一番激烈的討論之後,大家決定要將集會地點挑選在這樣乙個位置:它離最遠的村莊的距離要盡可能的近。

我們把河看做一條足夠長的直線,河岸就是平面座標系上 y = 0 的這條線,y < 0 的區域是河水,而所有村莊都在 y ≥ 0 的區域裡。現在給出所有村莊的平面座標,你要在河岸上找到這樣乙個位置,使得它到所有村莊的最遠距離最小。

輸入檔案包含多組測試資料。

第一行,給出乙個整數 t,為資料組數。接下來依次給出每組測試資料。

每組資料的第一行是乙個整數 n,表示村莊的數量。接下來 n 行,每行有兩個實數 xi 和 yi,表示每乙個村莊的座標。

對於每組測試資料,輸出一行"case #x: y",其中 x 表示測試資料編號,y 表示集會地點的 x 座標值,要求與正確答案的絕對誤差在10-6以內。所有資料按讀入順序從 1 開始編號。

小資料:t ≤ 100, 0 < n ≤ 50, 0 ≤ |xi|, yi ≤ 10000

大資料:t ≤ 10, 0 < n ≤ 50000, 0 ≤ |xi|, yi ≤ 10000

樣例輸入

1

50 8

1 64 4

-5 7

-6 1

樣例輸出

case #1: -1.000000

題外話:

假設函式f(x) =a*x^2+b*x+c

a = 0,b!=0時退化為一條直線,這個時候滿足單調性,我們可以通過二分來做。

當a!=0時,他為一條拋物線,這個時候我們可以用三分來做。

分析:如上圖。

假設最優點為x,往x的左面走到x1,距離會增大,往x的右面走到x2,距離同樣會增大。

由於只有乙個極值點,我們假設區間為[l,r]。

1.找出兩個點x1,x2(上圖不是很準確。。。),這兩個點剛好把[l,r]分成相等的三個部份。

2.判斷f(x1)與f(x2)哪個更優。

如果f(x1)>f(x2),如左圖,則把l = x1

否則,r = x2

3.重複1,2,直到滿足精度。

由於精度不好控制,我們可以直接設定調整的步數,從題目資料我們可以估計出步數的範圍可以假設為100,(2/3)^100次方肯定能夠滿足精度要求了。。。

程式碼如下:

#include #include #include #include #include #include #include #include #include #include #include using namespace std;

typedef long long ll;

typedef unsigned long long ull;

#define lx(x) (x<<1)

#define rx(x) (x<<1|1)

#define debug puts("here")

#define rep(i,n) for(int i=0;iret)

l = m1;

else

r = m2;

}if(px1<0&&fabs(px1)<1e-9) // 判斷是否會出現-0.000000

px1 *= -1.0;

printf("%.6lf\n",px1);

}return 0;

}

大家有空可以做做cf 8d這題,很經典的三分套三分做法。。。

以上~~

2013程式設計之美挑戰賽 集會

description 在一條河的一側,分布著 n 個村莊。這些村莊平日裡需要一些 往來,然而商人們來回走遍每一座村莊是非常辛苦的,於是他們決定每個月都在河邊舉行一次集會,大家都來集會上購買需要的物品。然而在集會地點的選擇上,大家卻有分歧,因為誰都不願意集會的地點離自己村莊非常遠。經過一番激烈的討論...

程式設計之美 活動中心問題與三分法

樓主小弱一枚,發現在找工作中演算法還是非常有用的。所以決心現在開始逐步學習。自己初賽都過不去,覺得看下這些題目還是蠻有意思的,總結了網上別人的方法,來寫點自己的理解。題目描述 時間限制 12000ms 單點時限 6000ms 記憶體限制 256mb a市是乙個高度規劃的城市,但是科技高階發達的地方,...

2013程式設計之美資格賽總結

終於可以完成乙個程式比賽的題目了,雖然這次的時間有些長。這是第一次完成,感到真心不錯。廢話不說了,下面說一下這次程式設計之美預選賽的情況。當我在凌晨看到這三個題目時,感覺第乙個還有希望,第二個一點思路沒有,第三個不敢期望。第乙個是詞對變換,感覺不太難。第二道是一種.怎麼說呢,反正是一點思路沒有。第三...