除第乙個人以外的每個人能獲得的獎賞為他之前所有人的左手乘積除以自己右手上的值(注意是之前的所有人不包括自己),通過改變順序使得獲得最多獎賞最小化。
貪心策略:受到奶牛的雜技這題的影響,我們發現乘積越大的要往後放除的大的也要往後放,所以我們根據左手右手的乘積從小到大排序,然後以此計算取max即可,交了之後wa了,標準答案賊大已經超出ull範圍,所以還得上個高精乘除單精(順便複習一手)。
#include
using
namespace std;
typedef
long
long ll;
const
int maxn =
1e3+10;
typedef pair<
int,
int>pii;
pii a[maxn]
;int n;
vector<
int>
multi
(vector<
int>a,
int b)
while
(t)return c;
}vector<
int>
div(vector<
int> a,
int b)
t %= b;
}reverse
(c.begin()
,c.end()
);//低位到高位儲存 符合豎式計算的方法
return c;
}vector<
int>
getmax
(vector<
int> a,vector<
int> b)
return b;
}int
main()
;//將乘積與自己的左手存起,要右手的時候就除下就行了
}sort
(a+1
,a+1
+n);
//貪心策略:按照乘積從小到大排序
vector<
int>
ans(1,
0);//存最後答案 初始為0
vector<
int>
mul(1,
1);//存左手乘積 初始為1
for(
int i=
0;i<=n;i++
)for
(int i=ans.
size()
-1;i>=
0;i--
) cout<
;cout<
}
ACWing 114 國王遊戲
恰逢某國國慶,國王邀請n nn位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左 右手上面分別寫下乙個整數,國王自己也在左 右手上各寫乙個整數。然後,讓這n nn位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大臣獲得的金幣數分別是 排在該大臣前面的所有人的左手...
AcWing 114 國王遊戲 貪心 大數處理
恰逢 h 國國慶,國王邀請 n 位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左 右手上面分別寫下乙個整數,國王自己也在左 右手上各寫乙個整數。然後,讓這 n 位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大臣獲得的金幣數分別是 排在該大臣前面的所有人的左手...
國王的遊戲
恰逢 h 國國慶,國王邀請 n 位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左 右手上面分別寫下乙個整數,國王自己也在左 右手上各寫乙個整數。然後,讓這 n 位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大臣獲得的金幣數分別是 排在該大臣前面的所有人的左手...