Problem#
給你一個整數陣列 N[i]
代表石頭的個數,再給你一個數字 k
代表操作數,操作方法如下:
-
選一堆石頭
N[i]
然後從裡面拿走floor(N[i]/2.0)
問你最後拿完石頭的總和最小為多少? -
$1 \le N.size() \le 10^5$
-
$1 \le N[i] \le 10^4$
-
$1 \le k \le 10^5$
想法#
用 heap 維護石頭數量,每次拿最大然後減去 floor(num / 2.0)
然後塞回 heap ,最後加總即可
- 時間複雜度: $\mathcal{O}(n\log{n})$
- 空間複雜度: $\mathcal{O}(n)$
AC Code#
心得#
這題應該是 Easy