國王遊戲 貪心 大數

2022-05-25 20:48:15 字數 1545 閱讀 6687

恰逢h國國慶,國王邀請n位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左、右手上面分別寫下乙個整數,國王自己也在左、右手上各寫乙個整數。然後,讓這n位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大臣獲得的金幣數分別是:排在該大臣前面的所有人的左手上的數的乘積除以他自己右手上的數,然後向下取整得到的結果。

國王不希望某乙個大臣獲得特別多的獎賞,所以他想請你幫他重新安排一下隊伍的順序,使得獲得獎賞最多的大臣,所獲獎賞盡可能的少。注意,國王的位置始終在隊伍的最前面。

輸入

第一行包含乙個整數n,表示大臣的人數。

第二行包含兩個整數a和b,之間用乙個空格隔開,分別表示國王左手和右手上的整數。接下來n行,每行包含兩個整數a和b,之間用乙個空格隔開,分別表示每個大臣左手和右手上的整數。

對於20%的資料,有1≤ n≤ 10,0 < a、b < 8;

對於40%的資料,有1≤ n≤20,0 < a、b < 8;

對於60%的資料,有1≤ n≤100;

對於60%的資料,保證答案不超過10^9;

對於100%的資料,有1 ≤ n ≤1,000,0 < a、b < 10000。

輸出

輸出只有一行,包含乙個整數,表示重新排列後的隊伍中獲獎賞最多的大臣所獲得的金幣數。

樣例輸入

31 1

2 37 4

4 6樣例輸出

2分析:先假設有兩個大臣,國王左手為a0,右手為b0,大臣1左手為a1,右手為b1,大臣2左手為a2,右手為b2.

有兩種排列方法:1.大臣1在前,最後答案為max(a0/b1,a0*a1/b2)

2.大臣2在前,最後答案為max(a0/b2,a0*a2/b1)

不妨設大臣1在前為最後答案,然後推出關係式.

顯然a0/b1然後就是資料太大,需要大數運算.

還有考慮當最後那個大臣右手數字很大的時候,算的話會得出0,所以加個特判為0的時候輸出1.

1 #include 2 #include 3

#define jz 10000;

4using

namespace

std;

5struct

one6

p[1010];9

bool cmp(one a,one b) //

按乘積公升序

1013

int a[10000]=;

14void mul(int a,int n) //

乘法1523}

24void div(int a,int n) //

除法2533}

34int

main()

3554 printf("

%d",a[t--]);

55for(;t>=0;t--)

56 printf("

%04d

",a[t]);

57 putchar(10

);58 }

國王遊戲 貪心 大數相乘

時間限制 1 sec 記憶體限制 128 mb 題目描述 恰逢h國國慶,國王邀請n 位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左 右手上面分別寫下乙個整數,國王自己也在左 右手上各寫乙個整數。然後,讓這n 位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大...

AcWing 114 國王遊戲 貪心 大數處理

恰逢 h 國國慶,國王邀請 n 位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左 右手上面分別寫下乙個整數,國王自己也在左 右手上各寫乙個整數。然後,讓這 n 位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大臣獲得的金幣數分別是 排在該大臣前面的所有人的左手...

貪心演算法 國王遊戲

孫悟空給花果山的小猴子們分桃子。首先,他讓每只小猴在左 右手上面分別寫下乙個整數,悟空自己也在左 右手上各寫乙個整數。然後,讓這 n 隻小猴排成一排,悟空站在隊伍的最前面。排好隊後,所有的小猴都會獲得一些桃子,每只小猴獲得的桃子數分別是 排在該小猴前面的所有猴子的左手上的數的乘積除以他自己右手上的數...