CODEVS 1198 國王遊戲

2022-05-28 11:39:15 字數 2267 閱讀 8460

2023年noip全國聯賽提高組

時間限制: 1 s

空間限制: 128000 kb

題目等級 : 鑽石 diamond

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

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

輸入描述 input description

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

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

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

輸出描述 output description

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

金幣數。

樣例輸入 sample input

1 12 3

7 44 6

樣例輸出 sample output

資料範圍及提示 data size & hint

【輸入輸出樣例說明】

按 1、2、3號大臣這樣排列隊伍,獲得獎賞最多的大臣所獲得金幣數為 2;

按 1、3、2這樣排列隊伍,獲得獎賞最多的大臣所獲得金幣數為2;

按 2、1、3這樣排列隊伍,獲得獎賞最多的大臣所獲得金幣數為 2;

按 2、3、1這樣排列隊伍,獲得獎賞最多的大臣所獲得金幣數為 9;

按 3、1、2這樣排列隊伍,獲得獎賞最多的大臣所獲得金幣數為 2;

按 3、2、1這樣排列隊伍,獲得獎賞最多的大臣所獲得金幣數為 9。

因此,獎賞最多的大臣最少獲得 2 個金幣,答案輸出 2。

【資料範圍】

對於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。

#include#include

#include

#include

using

namespace

std;

struct

chancellor

c[1010

];int

ans,len,f,maxxlen;

int a[10000],a2[10000],d[10000],maxx[10000

];char str[10000

];int cmp(const chancellor &a,const chancellor &b)

void cheng(int a,int

b)

while (d[len+1]) len++;

while (d[len]/10

)

for (int i=1;i<=len;i++)

a[i]=d[i];

}void chu(int a,int

b)

int pd=0

;

for (int i=1;i<=len;i++)

if(d[i])

if(pd)

if (maxxlen>len-f+1 ||d[i]break

; }

}}int

main()

sort(c+1,c+n+1

,cmp);

for(int i=0;c[0].l;i++)

len=strlen(str);

for (int i=1;i<=len;i++)

a[i]=str[i-1]-'0'

;

for (int i=1;i<=len;i++)

a2[i]=str[len-i]-'0'

;

for (int i=1;i<=n;i++)

for (int i=f;i<=maxxlen+f-1;i++)

cout

}

codevs 1198 國王的遊戲

題意 有個國王站在乙個佇列的開頭,左右手各有乙個數字,然後有n個人左右手也各有乙個數字,然後把這n個人隨便排序,定義第i個人的權值為前面所有的人左手數字乘積除以第i個人右手的數字,問的是怎麼排序使得這n個人中最大的權值最小,輸出這個權值。題解 問題是怎麼排序使得最大權值最小,那我們就需要知道排序的條...

國王的遊戲

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

114 國王遊戲

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