YL杯超級籃球賽 Standard IO

2021-09-03 00:04:38 字數 3169 閱讀 1769

題意

/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人。小三對這場籃球賽非常感興趣,所以一場都沒有落下。每天中午都閃時守候在籃球場看比賽。經過乙個星期的研究,小三終於對籃球的技戰術找到...