題目描述
恰逢 H 國國慶,國王邀請(qǐng) n 位大臣來玩一個(gè)有獎(jiǎng)游戲。首先,他讓每個(gè)大臣在左、右手上面分別寫下一個(gè)整數(shù),國王自己也在左、右手上各寫一個(gè)整數(shù)。然后,讓這 n 位大臣排成一排,國王站在隊(duì)伍的最前面。排好隊(duì)后,所有的大臣都會(huì)獲得國王獎(jiǎng)賞的若干金幣,每位大臣獲得的金幣數(shù)分別是:排在該大臣前面的所有人的左手上的數(shù)的乘積除以他自己右手上的數(shù),然后向下取整得到的結(jié)果。國王不希望某一個(gè)大臣獲得特別多的獎(jiǎng)賞,所以他想請(qǐng)你幫他重新安排一下隊(duì)伍的順序,使得獲得獎(jiǎng)賞最多的大臣,所獲獎(jiǎng)賞盡可能的少。注意,國王的位置始終在隊(duì)伍的最前面。
【數(shù)據(jù)范圍】對(duì)于 100%的數(shù)據(jù),有 1 ≤ n ≤1,000,0 < a、b < 10000。
解題金鑰匙(關(guān)鍵詞):ai*bi排序、高精度、高精除以低精、高精乘、(也可以用壓位高精)
即將左手與右手的乘積從小到大排序,然后計(jì)算求最大值即可
貪心證明:第i個(gè)大臣左右手寫的是a,b第j個(gè)大臣左右手寫的是x,y,i之前的左手分?jǐn)?shù)為q,i->j之間為p那么現(xiàn)在最大分?jǐn)?shù)是max(q/b,q*a*p/y) 化簡(jiǎn)以后:max(1/b,a*p/y)又因?yàn)槭窍蛳氯≌?/a==0,1一定小于x*p/y(至于1的情況 自己手寫一下發(fā)現(xiàn)并不影響)同理交換之后 max(q/y,q*p*x/b)->max(1/y,p*x/b)->p*x/b即是比較min(p*x/b,a*p/y)->min(x/b,a/y)要求x/b x*y<a*b就是沖要條件
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注