題目鏈結
題目描述恰逢
h h
國國慶,國王邀請
n' role="presentation">n
n 位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左、右手上面分別寫下乙個整數,國王自己也在左、右手上各寫乙個整數。然後,讓這
n n
位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大臣獲得的金幣數分別是:排在該大臣前面的所有人的左手上的數的乘積除以他自己右手上的數,然後向下取整得到的結果。
國王不希望某乙個大臣獲得特別多的獎賞,所以他想請你幫他重新安排一下隊伍的順序,使得獲得獎賞最多的大臣,所獲獎賞盡可能的少。注意,國王的位置始終在隊伍的最前面。
輸入輸出格式
輸入格式
第一行包含乙個整數
n' role="presentation">n
n,表示大臣的人數。
第二行包含兩個整數
a a
和 b' role="presentation">b
b ,之間用乙個空格隔開,分別表示國王左手和右手上的整數。
接下來
n n
行,每行包含兩個整數
a' role="presentation">aa和
b b
,之間用乙個空格隔開,分別表示每個大臣左手和右手上的整數。
輸出格式
乙個整數,表示重新排列後的隊伍中獲獎賞最多的大臣所獲得的金幣數。
輸入
3
1 1
2 3
7 4
4 6
輸出
2
解題思路:
本題主要考察貪心和高精度。國王的位置始終是定的,根據大臣之間不同的排序決定最後拿到最多獲賞的大臣盡可能的少,現在不妨假設相鄰的第
i' role="presentation">ii和第
j j
個大臣前面已經累積了to
tal' role="presentation">tot
alto
tal,若保證獲獎時
i i
得到的金幣盡可能的少於
j' role="presentation">jj。即
tota
l∗ha
nd[i
].l/
hand
[j].
r<=to
tal∗
hand
[j].
l/ha
nd[i
].r tot
al∗h
and[
i].l
/han
d[j]
.r
<=to
tal∗
hand
[j].
l/ha
nd[i
].
r轉化過來即是:ha
nd[i
].l∗
hand
[i].
r<=ha
nd[j
].l∗
hand
[j].
r han
d[i]
.l∗h
and[
i].r
<=ha
nd[j
].l∗
hand
[j].
r故直接對ha
ndh an
d結構體按上述規則排序即可,同時連乘時需要高精度。
最後注意到金幣最多的不一定是最後乙個大臣,例如:
3
9999 1
1 11 1
1 9999 排序之後最後一名大臣得到金幣不一定是最多的
所以排序完成之後對每個大臣進行計算時,需要對最多的金幣數量進行更新。
**部分:
#include
#include
#include
using
namespace
std;
#define maxn 1000
struct handha[n];
bool cmp(hand &a,hand &b)
struct bignum
void
set(int x)while(x!=0);
}void print()
printf("\n");
}bignum operator * (int &x)
if(carry)
return ans;
}bignum operator / (int &x)
ans.size=0;
for(int j=0;jif(ans.digit[j]!=0)
ans.size=j;//找到最高位
}ans.size++;
return ans;
}bool
operator
< (bignum &a)
if(j==0)
return
false;}}
}a,b;
int main()
洛谷P1080 國王遊戲 貪心 高精度
p1080 國王遊戲 啊啊啊,剛才已經寫了一次了,但是edge瀏覽器不知道為什麼卡住了,難受。好吧,其實是一道可做題,分析得到的貪心策略就是就是將a b小的放在前面 其他的懶得說了 主要還是要會高精度,要不然寫不出來。ac 借鑑題解大佬的,我自己寫不出來,主要是高精度不太會 include incl...
P1080 國王遊戲 高精度 1
恰逢 h國國慶,國王邀請n位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左 右手上面分別寫下乙個整數,國王自己也在左 右手上各寫乙個整數。然後,讓這 n 位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大臣獲得的金幣數分別是 排在該大臣前面的所有人的左手上的數...
洛谷 P1080 國王遊戲
原題 題目描述 恰逢 h 國國慶,國王邀請 n 位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左 右手上面分別寫下乙個整數,國王自己也在左 右手上各寫乙個整數。然後,讓這 n 位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大臣獲得的金幣數分別是 排在該大臣前...