有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...