程式設計之美初賽第一場

2021-09-07 11:48:52 字數 1579 閱讀 6247

時間限制:

12000ms

單點時限:

6000ms

記憶體限制:

256mb

a市是乙個高度規劃的城市。可是科技高階發達的地方,居民們也不能忘記運動和鍛鍊,因此城市規劃局在設計a市的時候也要考慮為居民們建造乙個活動中心。方便居住在a市的居民們能隨時開展運動。鍛鍊強健的身心。

城市規劃局希望活動中心的位置滿足下面條件:

1. 到全部居住地的總距離最小。

2. 為了方便活動中心的資源補給和其它器材的維護,活動中心必須建設在a市的主幹道上。

為了簡化問題。我們將a市擺在二維平面上,城市的主幹道看作直角座標系平的x軸,城市中全部的居住地都能夠看成二維平面上的乙個點。

如今。a市的城市規劃局希望知道活動中心建在哪兒最好。

第一行包含乙個數t。表示資料的組數。

接下來包括t組資料,每組資料的第一行包括乙個整數n。表示a市共同擁有n處居住地

接下來n行表示每處居住地的座標。

對於每組資料。輸出一行「case x: y」,當中x表示每組資料的編號(從1開始)。y表示活動中心的最優建造位置。我們建議你的輸出保留y到小數點後6位或以上,不論什麼與標準答案的絕對誤差或者相對誤差在10-6以內的結果都將被視為正確。

小資料:1 ≤ t ≤ 1000, 1 ≤ n ≤ 10

大資料:1 ≤ t ≤ 10, 1 ≤ n ≤ 105

對於全部資料。座標值都是整數且絕對值都不超過106

例子1:活動中心的最優建造位置為(1.678787, 0)

例子輸入

1

31 1

2 23 3

例子輸出
case 1: 1.678787

分析:初看此題,感覺不難,目標是在x軸上找乙個點,讓它距離全部點距離之和最小。可是一動手做才發現不知道從**切入。由於假設從最小的x遍歷到最大的x的話,無法設定步長(題目精確到了10^-6),所以還得找其它方法。

1、對目標函式求導。目標函式是 y=((x-x1)^2+y1*y1)^1/2+((x-x2)^2+y2*y2)^1/2+...,我們的目標是找到它的最小值,對它求導後,令導數等於0,此時的 x 就是我們要找的目標函式極小值處的 x 。可是導數=0也不好解。繼續對導數求導發現其是恆大於0的,也就是說導數是遞增的。所以導數的值應該是由負到正變化的,故目標函式應該是先遞減後遞增,有極小值,我們對導數應用二分法,找到它等於0處的點;關鍵**例如以下:

while(fabs(l-h)>= 0.00000001)else

}

//calcu函式關鍵部分。求導數值
for(int i= 0; i< len; ++i)
return sum>=0;

2、看到還有一位網友說,能夠用三分法(我還是頭一次聽說這個三分法。。),即找乙個全域性的中間點mid,再找乙個右半部分的mid,比較二者的目標函式值。誰小就往那邊移動邊界;

double midl,midr,le,re,lme,rme;

while(maxx-minx>eps)

2014程式設計之美初賽第一場

時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 一般來說,我們採用針孔相機模型,也就是認為它用到的是小孔成像原理。在相機座標系下,一般來說,我們用到的單位長度,不是 公尺 這樣的國際單位,而是相鄰畫素的長度。而焦距在相機座標系中的大小,是在影象處理領域的乙個非常重要的物理量。...

程式設計之美初賽(第一場) 焦距

時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 一般來說,我們採用針孔相機模型,也就是認為它用到的是小孔成像原理。在相機座標系下,一般來說,我們用到的單位長度,不是 公尺 這樣的國際單位,而是相鄰畫素的長度。而焦距在相機座標系中的大小,是在影象處理領域的乙個非常重要的物理量。...

程式設計之美初賽第一場 樹

時間限制 4000ms 單點時限 2000ms 記憶體限制 256mb 有乙個n個節點的樹,其中點1是根。初始點權值都是0。乙個節點的深度定義為其父節點的深度 1,特別的,根節點的深度定義為1。現在需要支援一系列以下操作 給節點u的子樹中,深度在l和r之間的節點的權值 這裡的深度依然從整個樹的根節點...