NOIP2012 國王遊戲

2022-07-16 20:03:14 字數 1083 閱讀 6934

這道題用到了貪心的思想,與簡單的貪心不同,最優解並不能一眼就看出來,需要通過列式比較。我們設想對於任意的兩位大臣x和y,他們兩個的排列順序會對答案有影響。假設國王和之前的大臣左手上的數乘積為pre,若x排在y前,ans1=max(pre/x.b,pre*x.a/y.b),ans2=max(pre/y.b,pre*y.a/x.b)。因為必有pre*x.a/y.b>pre/y.b,pre*y.a/x.b>pre/x.b,若要ans1有了以上分析就可以有60分,但本題ans的最大值可以達到10^5000左右!!!要用高精度,這才是最坑的。弄了好久才過去,藉著這個契機,好好改改我的高精度模板。。。

1 #include2 #include3 #include4 #include

5using

namespace

std;

6const

int maxn=1005,maxl=5005;7

intn,ka,kb;

8struct

biginteger

14bool

operator

< (const biginteger& rhs) const

20else

return len

22void

operator * (const

int& rhs)

29 len+=15;30

while(!num[len]&&len>1) --len;31}

32 biginteger operator / (const

int& rhs) const

38while(!ans.num[ans.len]&&ans.len>1) --ans.len;

39return

ans;40}

41void

print()

44} now,ans;

45struct

minister

50} m[maxn];

51int

main()

60ans.print();

61return0;

62 }

ac**

noip2012國王遊戲

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

NOIP2012 國王遊戲

題解 一開始看著題覺得是二分答案 最大值的最小值 後來發現不滿足單調性 再後來發現可以用貪心做 只需把大臣按照左手 右手公升序排序即可 證明 很顯然前面的大臣位置隨便調換對後面的大臣並沒有影響 那麼假設現在已經排了i 1個大臣,p a 1 a 2 a 3 a i 1 第i個大臣的錢w i p b i...

NOIP2012國王遊戲

用貪心可以解決。將所有人按左右手的乘積排序,這樣一定可以保證結果最優。現給出證明 首先,任意相鄰兩人的順序對於排在他們前面和後面的人沒有影響。顯然 兩人左右手上的數字分別為l 1 r 1 l 2 r 2 令l 1 r 1 若1在2前面,那麼兩人分得的金幣分別為sum r 1 sum l 1 r 2 ...