YL杯超級籃球賽

2021-10-08 02:51:56 字數 3056 閱讀 3683

\operatorname

jzoj13

25一年一度的高一yl杯超級籃球賽開賽了。當然,所謂超級,意思是參賽人數可能多餘 5

55 人。小三對這項籃球非常感興趣,所以一場都沒有落下。每個中午都準時守侯在籃球場看比賽。經過乙個星期的研究,小三終於對籃球的技戰術找到了一絲絲感覺了。他發現打yl杯的每個班都有一套相似的進攻戰術:

控球後衛帶球到前場,找到乙個最佳攻擊點 (x,

y)

( x , y )

(x,y

)所有除控衛以外的隊員都從各自的當前位置迅速向 (x,

y)

( x , y )

(x,y

) 移動

控球後衛根據場上情況組織進攻

這個戰術對於一般情況是非常奏效的,但是每個隊員畢竟不像小三一樣每天精力過剩,每個隊員都有乙個疲勞指數 w

ww ,顯然對於每個隊員的移動需要消耗一些能量。

假設乙個隊員從位置 (x1

,y1)

( x1 , y1 )

(x1,y1

) 移動到 (x,

y)

( x , y )

(x,y

) 的能量消耗為 w∗(

abs(

x−x1

)+ab

s(y−

y1))

w * (abs ( x - x1 ) +abs ( y - y1 ) )

w∗(abs

(x−x

1)+a

bs(y

−y1)

) , 這裡 abs

absab

s 為絕對值函式。那麼我們希望整個隊伍一次進攻的能量消耗當然是越少越好。顯然能量消耗的多少直接取決於控球後衛對於攻擊點 (x,

y)

( x , y )

(x,y

) 的選擇。

因為參賽人數眾多,所以小三希望你能編寫乙個程式,即幫他找出某個時刻的最佳攻擊點。

第一行:乙個整數 n

nn ,表示籃球隊人數

第二行:一共 n

nn 個整數,其中的第 i

ii 個數 w

iw_i

wi​ 表示第i個隊員的疲勞指數。

第 3 ∼n

+2

3\sim n+2

3∼n+

2行:每一行兩個整數x和y,其中的第 i+2

i+2i+

2 行,表示第 i

ii 個隊員的當前位置的橫座標和縱座標。

乙個實數。表示所有隊員集合到最佳攻擊位置的能量消耗總和,答案保留兩位小數。

110

0

0.00
第一題 n

<

=50000,x

,y

n<=50000,x,y

n<=5

0000

,x,y

都在longint範圍內。

這道題可以用貪心來做。

由題目得到 x

xx 軸其實和 y

yy 軸沒有關係,我們只需要分別讓所有的 xi−

x1

x_i−x1

xi​−x1

的和與所有的 yi−

y1

y_i−y1

yi​−y1

的和加起來分別最少。那我們就可以分開找到最佳攻擊位置的 x

xx 軸座標和 y

yy 軸座標。

至於怎麼判斷在橫向或者縱向中,哪乙個位置是最佳的,我們其實可以發現就是要讓這個點兩邊所有的點的疲勞值的和最小。

至於怎麼找到這乙個位置,就從左到右(或者從下往上)乙個乙個找點,然後把這個點的疲勞值加到乙個變數裡面,當這個變數超過了所有人疲勞值的和的一半的時候,當前列舉到的點的位置就是最優的位置。

最後,我們只需要用過上面求隊員能量消耗的公式,列舉每乙個人,算出他的能量消耗。那麼所有人能量消耗的總和就是答案了。

有一點要注意的是,因為 x,y

x,yx,

y 都在longint範圍內,所以要有關座標的變數都要開long long。

#include

#include

#define ll long long

using

namespace std;

struct nodea[

50001];

int n, sum, now;

ll ansx, ansy, ans;

bool

cmp1

(node x, node y)

bool

cmp2

(node x, node y)

intmain()

for(

int i =

1; i <= n; i++

)scanf

("%lld %lld"

,&a[i]

.x,&a[i]

.y);

//讀入

sort

(a +

1, a + n +

1, cmp1)

;//按x軸排序

for(

int i =

1; i <= n; i++)}

now =0;

//初始化

sort

(a +

1, a + n +

1, cmp2)

;//按y軸排序

for(

int i =

1; i <= n; i++)}

for(

int i =

1; i <= n; i++

) ans +

=(ll)a[i]

.w *

(abs

(ansx - a[i]

.x)+

abs(ansy - a[i]

.y))

;//求出每一人的疲勞值

printf

("%lld.00"

, ans)

;//輸出

return0;

}

YL杯超級籃球賽 Standard IO

題意 description 一年一度的高一yl杯超級籃球賽開賽了。當然,所謂超級,意思是參賽人數可能多餘5人。小三對這項籃球非常感興趣,所以一場都沒有落下。每個中午都準時守侯在籃球場看比賽。經過乙個星期的研究,小三終於對籃球的技戰術找到了一絲絲感覺了。他發現打yl杯的每個班都有一套相似的進攻戰術 ...

YL杯超級籃球賽 紀中 1325

題目大意 一年一度的高一yl杯超級籃球賽開賽了。當然,所謂超級,意思是參賽人數可能多餘5人。小三對這項籃球非常感興趣,所以一場都沒有落下。每個中午都準時守侯在籃球場看比賽。經過乙個星期的研究,小三終於對籃球的技戰術找到了一絲絲感覺了。他發現打yl杯的每個班都有一套相似的進攻戰術 1 控球後衛帶球到前...

t017 YL杯超級籃球賽

time limit 1 second memory limit 256 mb 問題描述 一年一度的高一yl杯超級籃球賽開賽了。當然,所謂超級的意思是參賽人數可能多於5人。小三對這場籃球賽非常感興趣,所以一場都沒有落下。每天中午都閃時守候在籃球場看比賽。經過乙個星期的研究,小三終於對籃球的技戰術找到...