1. 程式人生 > >深度學習(期望 坑)

深度學習(期望 坑)

題目描述

小 A 最近在研究深度學習,他自己搭建了一個很牛逼的神經網路,現在他手頭一共有 n 組訓練資料,一開始他會給自己的神經網路設定一個 batch size,假設為 B (1≤ B≤ n) ,每次訓練他都會從手頭的 n 組訓練資料中抽取不同的 B 組資料,然後扔到神經網路去訓練。
然而小 A 的伺服器很垃圾,所以執行時間和 B 成正比,每一次訓練都會花費 B 秒的時間。
現在小 A 發現這樣每次隨機選資料的話,從概率上講要訓練好多次才能使得每組訓練資料都被選中過。小 A 是一個深度學習的新手,他覺得只要所有訓練資料都被選中過,那麼這個模型就會很牛逼,所以只要某次訓練後,如果所有訓練資料都被選中過,那麼他就會停止進行訓練。
現在他想合理地設定 B ,使得訓練總時間的期望值儘可能地短,你只需要求出這個最小的期望值。

 

輸入

第一行一個正整數 t 表明有多少組測試資料   (1≤ t ≤ 20)
接下來的t行,每行有一個整數n,表明有多少組訓練資料  (1≤ n ≤ 40)

 

輸出

輸出一個實數,表示最小的期望值
結果保留3位有效數字

 

樣例輸入

1
1

 

樣例輸出

1.000

 

提示

人類的本質是什麼?

坑的一批。

把題面的意思提煉出來,指的就是把所有資料都訓練一次的 最小期望,顯然一次把所有資料都訓練完的期望是最小的,所 以只要把讀入的資料轉化為 3 位小數輸出就行了。

#include<cstdio>
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		int a;
		scanf("%d",&a);
		printf("%.3f\n",(double)a);
	}
}