P1080 國王遊戲

2022-04-30 11:33:14 字數 2813 閱讀 5774

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

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

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

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

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

乙個整數,表示重新排列後的隊伍中獲獎賞最多的大臣所獲得的金幣數。

輸入 #1複製

3 

1 1

2 3

7 4

4 6

輸出 #1複製

2
【輸入輸出樣例說明】

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

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

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

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

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

按3 33、222、111 這樣排列隊伍,獲得獎賞最多的大臣所獲得金幣數為 999。

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

【資料範圍】

對於 20%的資料,有 1≤n≤10,0對於 40%的資料,有1≤n≤20,0對於 60%的資料,有 1≤n≤1001≤ n≤1001≤n≤100;

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

對於 100%的資料,有 1≤n≤1,000,0noip 2012 提高組 第一天 第二題

#include#include#include#includeusing namespace std;

templatevoid read(t &x)

int a,b;

const int n=10005;

struct node

dc[1010];

struct hp

;hp & hp::operator = (const char *c)

num[0]=j;

return *this;

}hp & hp::operator = (int a)

hp::hp()

hp::hp(int n)

hp hp::operator - (const hp &b) const //減法

}while(c.num[c.num[0]]==0&&c.num[0]>1) c.num[0]--;

return c;

}bool hp::operator > (const hp &b) const

return false;

}bool hp::operator < (const hp &b) const

bool hp::operator <= (const hp &b) const

bool hp::operator >= (const hp &b) const

bool cmp(node a,node b)

//hp hp::operator / (const hp& b) const //二分優化除法

//// c.num[i]=r-1;

// d=d-b*hp(r-1);

// }

// while(c.num[c.num[0]]==0&&c.num[0]>1) c.num[0]--;

// return c;

//}//hp hp::operator / (const hp &b) const

////

// }

// while (c.num[c.num[0]]==0&&c.num[0]>1) c.num[0]--; // 99999999/99999999

//// return c;

//}hp hp::operator / (int b) const

while(c.num[0]>0&&c.num[c.num[0]]==0) c.num[0]--;

return c;

}ostream & operator << (ostream & o,hp &n) //輸出

{ o<=1;i--)

{o.width(4);

o.fill('0');

o網上關於此題貪心策略的解釋:

排序完之後,就是高精度的計算了,容易出錯的地方就是除法吧,這裡是高精除以單精,如果把整數轉成高精度計算,很容易出錯,高精除高精一般不會用到。

P1080 國王遊戲

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

P1080 國王遊戲

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

P1080 國王遊戲

傳送門 考慮任意乙個排隊方案,對於其中某兩個相鄰位置 i 0,j i 1 如果交換更優 那麼有 max a r i al i r j max a r j al j r i 其中 a prod l k l 0 是國王左手的數 因為 a r i al j r i a r j al i r j 分類討論一...