演算法刷題 美團CodeM 2018資格賽

2021-08-20 11:15:03 字數 1185 閱讀 6754

小美和小團最近沉迷可樂。可供ta們選擇的可樂共有k種,比如可口可樂、零度可樂等等,每種可樂會帶給小美和小團不同的快樂程度。

ta們一共要買n瓶可樂,每種可樂可以買無限多瓶,小美會隨機挑選其中的m瓶喝,剩下的n-m瓶小團喝。

請問應該如何購買可樂,使得小美和小團得到的快樂程度的和的期望值最大?

現在請求出購買可樂的方案。

第一行三個整數n,m,k分別表示要買的可樂數、小美喝的可樂數以及可供選擇的可樂種數。

接下來k行,每行兩個整數a,b分別表示某種可樂分別給予小美和小團的快樂程度。

對於所有資料,1 <= n <= 10,000, 0 <= m <= n, 1 <= k <= 10,000, -10,000 <= a, b <= 10,000

一行k個整數,第i個整數表示購買第i種可樂的數目。

如果有多解,請輸出字典序最小的那個。

對於兩個序列 a1, a2, ..., ak, b1, b2, ..., bk,a的字典序小於b,當且僅當存在乙個位置i <= k滿足:

ai< bi且對於所有的位置 j < i,aj = bj;

示例1

2 1 2

1 23 1

0 2

一共有三種購買方案:

1. 買2瓶第一類可樂,小美和小團各喝一瓶,期望得到的快樂程度和為1+2=3;

2. 買1瓶第一類可樂和1瓶第二類可樂,小美和小團各有二分之一的概率喝到第一類可樂,另有二分之一的概率喝到第二類可樂,期望得到的快樂程度和為1*0.5+3*0.5+2*0.5+1*0.5=3.5;

3. 買2瓶第二類可樂,小美和小團各喝一瓶,期望得到的快樂程度和為3+1=4。

#include #include #include using namespace std;

const int nmax=10001;

int main()

auto cal = [a, b, n, m](int x)-> double

; for (int j = 0; j < k; ++j)

buy[res] = n;

for (int i = 0; i < k-1;++i)

cout << buy[k-1];

}

2018美團CodeM程式設計大賽初賽B輪 A題開關燈

美團的辦公室一共有n層,每層有m個會議室,可以看成是乙個n m的網格圖。工程師們每天的工作需要協作的地方很多,經常要到會議室開會解決各種問題。公司是提倡勤儉節約的,因此每次會議室只在使用時才開燈。當乙個工程師進入會議室時,假設沒有其他人,他會把燈開啟。當乙個工程師離開會議室時,假設沒有其他人,他會把...

筆試刷題 美團

題目描述 大富翁遊戲,玩家根據骰子的點數決定走的步數,即骰子點數為1時可以走一步,點數為2時可以走兩步,點數為n時可以走n步。求玩家走到第n步 n 骰子最大點數且是方法的唯一入參 時,總共有多少種投骰子的方法。輸入描述 輸入包括乙個整數n,1 n 6 輸出描述 輸出乙個整數,表示投骰子的方法 輸入例...

筆試刷題 美團

題目描述 給你六種面額 1 5 10 20 50 100 元的紙幣,假設每種幣值的數量都足夠多,編寫程式求組成n元 n為0 10000的非負整數 的不同組合的個數。輸入描述 輸入包括乙個整數n 1 n 10000 輸出描述 輸出乙個整數,表示不同的組合方案數 輸入例子1 1輸出例子1 1 思路如下 ...