深度學習(期望 坑)
阿新 • • 發佈:2018-11-19
題目描述
小 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); } }