可樂【簡單期望】
阿新 • • 發佈:2020-09-11
題意
有 \(k\) 種可樂,每種可樂會給小美和小團帶來不同的可樂程度。現在共有 \(n\) 瓶可樂,每種可樂可以買無限瓶,小美會挑選其中的 \(m\) 瓶,而剩下的 \((n-m)\) 瓶小團喝。求出每種可樂各買多少瓶,使得小美和小團得到的快樂程度的和期望值最大。
\(1\leq n \leq 10000, 0 \leq m \leq n, 1 \leq k \leq 10,000, -10,000 \leq a, b \leq 10,000\)
題目連結:https://ac.nowcoder.com/acm/problem/16037
分析
假設第 \(i\) 瓶可樂買了 \(x_i\) 瓶,那麼對於答案最後的貢獻為:\(x_i(\frac{m}{n}·a_i+\frac{(n-m)}{n}·b_i)\)
程式碼
#include <bits/stdc++.h> using namespace std; int main() { int n,m,k,a,b; scanf("%d%d%d",&n,&m,&k); double p=1.0*m/n,maxn=-1000000.0;//由負數 int pos=0; for(int i=1;i<=k;i++) { scanf("%d%d",&a,&b); double tp=p*a+(1.0-p)*b; if(tp>=maxn) { pos=i; maxn=tp; } } for(int i=1;i<=k;i++) printf("%d%c",i==pos?n:0,i==k?'\n':' '); return 0; }