題意
/description
:
一年一度的高一yl杯超級籃球賽開賽了。當然,所謂超級,意思是參賽人數可能多餘5人。小三對這項籃球非常感興趣,所以一場都沒有落下。每個中午都準時守侯在籃球場看比賽。經過乙個星期的研究,小三終於對籃球的技戰術找到了一絲絲感覺了。他發現打yl杯的每個班都有一套相似的進攻戰術:
1 :控球後衛帶球到前場,找到乙個最佳攻擊點 ( x , y )
2 :所有除控衛以外的隊員都從各自的當前位置迅速向 ( x , y ) 移動
3 :控球後衛根據場上情況組織進攻
這個戰術對於一般情況是非常奏效的,但是每個隊員畢竟不像小三一樣每天精力過剩,每個隊員都有乙個疲勞指數w,顯然對於每個隊員的移動需要消耗一些能量。
假設乙個隊員從位置 (x1 , y1 ) 移動到 ( x , y )的能量消耗為 w * (abs ( x - x1 ) +abs ( y -y1 ) ), 這裡abs為絕對值函式。那麼我們希望整個隊伍一次進攻的能量消耗當然是越少越好。顯然能量消耗的多少直接取決於控球後衛對於攻擊點 ( x , y )的選擇。
因為參賽人數眾多,所以小三希望你能編寫乙個程式,即幫他找出某個時刻的最佳攻擊點。
讀入
/input
:
第一行:乙個整數n,表示籃球隊人數
第二行:一共n個整數,其中的第i個數wi表示第i個隊員的疲勞指數。
第3~n+2行:每一行兩個整數x和y,其中的第i+2行,表示第i個隊員的當前位置的橫座標和縱座標。
輸出
/output
:
乙個實數。表示所有隊員集合到最佳攻擊位置的能量消耗總和,答案保留兩位小數。
題解
/solution
:
要做此題,必先學帶權中位數。下面有簡單的解釋:
當點在中間時,才能保證兩邊比較接近,才能得到最小值。所以當左邊第一次大於右邊,即左邊第一次大於總和的一半,所得位置最優。
了解後,這題就是乙個模板。
**
/code:
type
arr=array [0..1000001] of longint;
var n,tot:longint;
w,x,y,ww:arr;
procedure init;
var i:longint;
begin
readln(n);
for i:=1 to n do
begin
read(w[i]);
tot:=tot+w[i];
end;
for i:=1 to n do
readln(x[i],y[i]);
end;
procedure qsort(var a:arr; l,r:longint);
var i,j,m,t:longint;
begin
i:=l; j:=r;
m:=a[(l+r) div 2];
repeat
while a[i]m do dec(j);
if i<=j then
begin
t:=a[i]; a[i]:=a[j]; a[j]:=t;
t:=w[i]; w[i]:=w[j]; w[j]:=t;
inc(i); dec(j);
end;
until i>j;
if ltot/2 then
begin
xx:=x[i];
break;
end;
end;
workx:=0;
for i:=1 to n do
begin
if x[i]=xx then continue;
workx:=workx+abs(xx-x[i])*w[i];
end;
end;
function worky:real;
var yy,i:longint;
sum:real;
begin
sum:=0;
for i:=1 to n do
begin
sum:=sum+w[i];
if sum>tot/2 then
begin
yy:=y[i];
break;
end;
end;
worky:=0;
for i:=1 to n do
begin
if y[i]=yy then continue;
worky:=worky+abs(yy-y[i])*w[i];
end;
end;
procedure main;
var xx,yy:real;
begin
ww:=w;
qsort(x,1,n);
xx:=workx;
w:=ww;
qsort(y,1,n);
yy:=worky;
writeln(xx+yy:0:2);
end;
begin
init;
main;
end.
YL杯超級籃球賽
operatorname jzoj13 25一年一度的高一yl杯超級籃球賽開賽了。當然,所謂超級,意思是參賽人數可能多餘 5 55 人。小三對這項籃球非常感興趣,所以一場都沒有落下。每個中午都準時守侯在籃球場看比賽。經過乙個星期的研究,小三終於對籃球的技戰術找到了一絲絲感覺了。他發現打yl杯的每個班...
YL杯超級籃球賽 紀中 1325
題目大意 一年一度的高一yl杯超級籃球賽開賽了。當然,所謂超級,意思是參賽人數可能多餘5人。小三對這項籃球非常感興趣,所以一場都沒有落下。每個中午都準時守侯在籃球場看比賽。經過乙個星期的研究,小三終於對籃球的技戰術找到了一絲絲感覺了。他發現打yl杯的每個班都有一套相似的進攻戰術 1 控球後衛帶球到前...
t017 YL杯超級籃球賽
time limit 1 second memory limit 256 mb 問題描述 一年一度的高一yl杯超級籃球賽開賽了。當然,所謂超級的意思是參賽人數可能多於5人。小三對這場籃球賽非常感興趣,所以一場都沒有落下。每天中午都閃時守候在籃球場看比賽。經過乙個星期的研究,小三終於對籃球的技戰術找到...