時間限制:
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之間的節點的權值 這裡的深度依然從整個樹的根節點...