阿里2020 4 1實習筆試題 攻擊怪獸

2021-10-22 06:43:30 字數 1257 閱讀 7689

有n

nn個怪獸,m

mm個弓箭,每個怪獸有生命值,每個弓箭有殺傷力和價值,每個怪獸只能用一支弓箭攻擊,弓箭殺傷》=怪獸生命時可消滅怪獸,求使用弓箭的最小價值。如無法消滅,返回-1。

因為目標是消滅怪獸,而且每個怪獸只能被乙隻弓箭攻擊,所以我們應該在優先考慮消滅的基礎上,選擇最小價值的弓箭。根據這個推理,我們可以將怪獸的生命值非公升序排序,並同時將弓箭按照攻擊力進行非公升序排序。最後,迴圈遍歷能消滅當前怪獸的弓箭,並使用優先佇列進行維護,選擇價值最小的那乙隻即可解決該問題。

n, m =

map(

int,

input()

.split())

if m < n:

return-1

monst_list =

list

(map

(int

,input()

.split())

)# n

monst_list.sort(key=

lambda x:

-x)value_list =

list

(map

(int

,input()

.split())

)# m

attack_list =

list

(map

(int

,input()

.split())

)# m

arrow_list =

[(value, attack)

for value, attack in

zip(value_list, attack_list)

]# m

arrow_list.sort(key=

lambda x:

-x[1])

del attack_list

value_list =

res =

0j =

0for i in

range

(n):

while j < m and arrow_list[j][1

]>= monst_list[i]

:- arrow_list[j][0

])j +=1if

not value_list:

return-1

else

: res +=

-value_list.pop(

)return res

阿里春招筆試2020 4 1 貪心 優隊

阿里筆試4.1 給一串二進位制字串如00011001,希望把他改為全為0,如果更改某個字元,那麼他兩邊的字元也要更改,例如把第二位的0換成1,那麼就變成了11111001.求最少翻轉次數。如果無法全0,輸出no。思路 貪心。分兩種情況,第乙個值修改 不修改,之後每個值都會受前面數影響,如果到了最後乙...

2020阿里實習生招聘筆試題

小強有n個養雞場,第i個養雞場初始有a i 只小雞,小強的每個養雞場每天早上都會增加k只小雞,到了下午小強會把雞最多的雞場賣掉一半雞,那麼小強想知道m天後他所有養雞場一共有幾隻雞。第一行輸入三個正整數n,m,k 第二行輸入n個正整數a i 表示養雞場雞數量。1 n 100000,1 m 100000...

阿里筆試題

計算二叉樹每一層的和 24for int i 0 i 29list.add index 30 31int sum 0 32for int i 0 i 35 兩個端點的數,是去除裡面第乙個,或者最後倒數第二個,比較去掉最小的那個 36int max sum math.min list.get 1 li...