有 10 萬個人及相應銀行賬戶存款,通過轉賬讓所有人的存款變得一樣,有哪些解題思路?

時間 2021-05-31 11:51:18

1樓:vzit

以每人的存款為縱座標,做寬度為1的柱狀圖,然後做一條平行於x軸的輔助線y = a,這條線上方的柱形面積乘以(100-k)%如果等於這條線下方面積減去的這條線下方柱形的面積,則最後答案就是a。所以用做圖的方式也能更好的理解為什麼用二分法去查詢a的值。

2樓:靈劍

按理來說不需要二分答案,比較簡單的方法是先排序,然後從小到大考慮,將最小的M人都補齊到第M人的金額,需要轉入多少錢,這可以通過在上乙個結果基礎上將(M-1)個相同金額的人人補到第M人的金額,或者通過預先計算前M項和序列來計算,複雜度是O(1)。這個錢除以k/(100-k),是手續費的損耗,然後計算總金額減去手續費損耗,再平均到每個人,是否超過第N個人的金額,如果超過則繼續考慮下一人,否則結果不超過第M人的金額,因此前(M-1)個人轉入,之後的人都是轉出,解乙個一元一次方程就可以求出最終金額,也是O(1),最終複雜度是排序的O(nlogn),如果提前排好序那就是O(n)

這個方法可以形象理解為將不同人的金額看成不同深度的容器,然後注水直到滿足水面齊平的條件。

3樓:暮無井見鈴

先把存款數排序,設有個人,排序結果有。

然後求出字首和。

假設所求結果為,,

則轉賬所用存款數為;

收到存款數為。

又因為手續費的關係,有。

解得。然後驗證是否在上述區間,若在就是結果。

4樓:Richard Xu

假設有N個人,每個人的存款是xi,總存款是X,最終平均存款是x0轉出的部分是K1=sum (xi-x0) * 1_轉入的部分是K2=sum (x0-xi) * 1_{xi=K1*k%又K1-K2=X - Nx0 所以 K1*k% <= X - Nx0二分查詢x0,複雜度O(NlogM) (N總人數,M最大錢數)有錯輕拍……

省賽什麼的,沒參加過ACM,不清楚。

家裡存款30多萬,個人5萬,自己有台10萬車。家裡搬遷住樓房有車庫還要不要在市裡買房?

中年婦女 當然建議買房了,我認識這本地的朋友稍微有點上進心的,都絕對不會只拆遷房。他們肯定會在市區市中心附近的學區給孩子後代準備一套學區,你們竟然已經有存款了可以考慮購置一些優質的學區房啊,然後大房子品牌地產,因為錢拆遷小區很多租住的人啊環境啊,稍微差一點!人往高處走隨往低處流考慮一下。 強烈建議買...

月薪5000,個人積蓄只有10萬有必要買車嗎

抵押車總部 你可以看看我這裡的車 白紙張 必不必要買,沒一定!得看你工作和生活需不需要買。我覺得有車還是會提高生活便利和質量!10W的積蓄我覺得買個可靠的二手車很不錯,平常上下班或日常出行可以接點順風車訂單 可以補貼部分用車費用。是我我就會買啦。 林海生 沒必要,你可以先拿這十萬去買房或者做其他的投...

乙個人死前向銀行借800萬,死後銀行如何處理?

龍傲天 銀行憑什麼借給他錢?我不認為乙個無房無車一貧如洗的人,銀行會借給他800萬。如果有別墅一類的抵押物,那倒是可以給它放貸。如果銀行把錢借給別人,這人又還不上錢。那就只能認栽了啊。這些收不上的錢就叫做壞賬了。 我是乙隻豬 銀行是不會給沒錢的人貸款的,這個人生前借了800萬,那麼他一定有財產且財產...