國王的遊戲

2021-10-02 21:38:39 字數 1425 閱讀 1381

恰逢 h 國國慶,國王邀請 n 位大臣來玩乙個有獎遊戲。

首先,他讓每個大臣在左、右手上面分別寫下乙個整數,國王自己也在左、右手上各寫乙個整數。

然後,讓這 n 位大臣排成一排,國王站在隊伍的最前面。

排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大臣獲得的金幣數分別是:

排在該大臣前面的所有人的左手上的數的乘積除以他自己右手上的數,然後向下取整得到的結果。

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

注意,國王的位置始終在隊伍的最前面。

輸入格式

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

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

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

輸出格式

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

資料範圍

1≤n≤1000031

1237

446輸出樣例:

2

#include

#define pii pair

#define fi first

#define se second

using

namespace std;

vector p;

vector<

int> ans;

vector<

int>

max(vector<

int> x, vector<

int> y)

vector<

int>

mul(vector<

int> x,

int y)

while

(t)return res;

}vector<

int>

div(vector<

int> x,

int y)

}reverse

(res.

begin()

, res.

end())

;return res;

}int n, a, b;

intmain()

);}sort

(p.begin()

, p.

end())

;for

(auto

&it:p)

for(

int i = ans.

size()

-1; i >=

0; i--

)printf

("%d"

, ans[i]);

return0;

}

114 國王遊戲

除第乙個人以外的每個人能獲得的獎賞為他之前所有人的左手乘積除以自己右手上的值 注意是之前的所有人不包括自己 通過改變順序使得獲得最多獎賞最小化。貪心策略 受到奶牛的雜技這題的影響,我們發現乘積越大的要往後放除的大的也要往後放,所以我們根據左手右手的乘積從小到大排序,然後以此計算取max即可,交了之後...

國王遊戲 貪心 大數

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

P1080國王的遊戲

沒過test6 test8 test9 test10 正在學習大數,未完持續 include include includeusing namespace std int n int ans 100000000 一共15位,每位又有算8位,除去第一位表示位數,共表達191位的數。int c 1000...