考試過程:這次考試難度較大,讀完四個題之後發現隻有T1可做,于是就死磕T1。我列出來一個一進制二次方程,證明了這是一個單峰函數,然後因為直接取最小值不對,我就打了一個三分套二分,結果可能是精度問題挂了。剩下的幾道題基本上連暴力分都沒有,屬實離譜。
思路:二分一個 mid,表示我們把代價 ≤mid 的貨币全部兌換,可以 O(1)計算出這樣的選擇的代價,如果 > x 則這個值不可取,如果合法,也可以O(1) 計算出兌換出的貨币數量。注意邊界情況就是最後可能會剩下一些錢,然而這些錢可能能夠再買一個最便宜的那個,特判一下就好了。記得開\(int128\),這東西還是比較好用的。
時間複雜度 O(n log x)。
代碼如下:
AC_code