【題目描述】
幾個人一起出去吃飯是常有的事。但在結帳的時候,常常會出現一些爭執。【輸入格式】第一行包含兩個整數 n、s;現在有 n 個人出去吃飯,他們總共消費了 s 元。
其中第 i 個人帶了ai 元。
幸運的是,所有人帶的錢的總數是足夠付賬的,但現在問題來了:每個人分別要出多少錢呢?
為了公平起見,我們希望在總付錢量恰好為 s 的前提下,最後每個人付的錢的標準差最小。
這裡我們約定,每個人支付的錢數可以是任意非負實數,即可以不是1分錢的整數倍。你需要輸出最小的標準差是多少。
標準差的介紹:標準差是多個數與它們平均數差值的平方平均數,一般用於刻畫這些數之間的「偏差有多大」。
形式化地說,設第 i 個人付的錢為 bi 元,那麼標準差為 :
第二行包含 n 個非負整數 a1, …, an。
【輸出格式】
輸出最小的標準差,四捨五入保留 4 位小數。
保證正確答案在加上或減去 10−9 後不會導致四捨五入的結果發生變化。
【樣例輸入1】
5 2333【樣例輸出1】666 666 666 666 666
0.0000【樣例解釋】每個人都出 2333/5 元,標準差為 0。
【樣例輸入2】
10 30【樣例輸出2】2 1 4 7 4 8 3 6 4 7
0.7928【評測用例規模與約定】對於 10% 的資料,所有 ai 相等;
對於 30% 的資料,所有非 0 的 ai 相等;
對於 60% 的資料,n ≤ 1000;
對於 80% 的資料,n ≤ 105;
對於所有資料,n ≤ 5 × 105, 0 ≤ ai ≤ 109。
題解
數論 & 貪心:
#include
#include
#include
#include
#include
using
namespace std;
const
int n =
500010
;int n;
int a[n]
;int
main()
else
// 錢再多,也只付平均數
}printf
("%.4lf"
,sqrt
(ans / n));
// 標準差 == 方差開根號
return0;
}
第九屆藍橋杯省賽C A組 付賬問題
題目描述 幾個人一起出去吃飯是常有的事。但在結帳的時候,常常會出現一些爭執。現在有 n 個人出去吃飯,他們總共消費了 s 元。其中第 i 個人帶了 ai 元。幸運的是,所有人帶的錢的總數是足夠付賬的,但現在問題來了 每個人分別要出多少錢呢?為了公平起見,我們希望在總付錢量恰好為 s 的前提下,最後每...
藍橋杯第九屆決賽
x星球的鈔票的面額只有 100元,5元,2元,1元,共4種。小明去x星旅遊,他手裡只有2張100元的x星幣,太不方便,恰好路過x星銀行就去換零錢。小明有點強迫症,他堅持要求200元換出的零鈔中2元的張數剛好是1元的張數的10倍,剩下的當然都是5元面額的。銀行的工作人員有點為難,你能幫助算出 在滿足小...
第九屆藍橋杯 螺旋折線
如圖p1.png所示的螺旋折線經過平面上所有整點恰好一次。對於整點 x,y 我們定義它到原點的距離dis x,y 是從原點到 x,y 的螺旋折線段的長度。例如dis 0,1 3,dis 2,1 9 給出整點座標 x,y 你能計算出dis x,y 嗎?輸入格式 x和y 對於40 的資料,1000 x,...