飽和式救援,西北大學集訓隊選拔賽(重現賽)

2021-09-22 12:29:48 字數 1205 閱讀 2799

「在全球性救援開始的0.42秒後,moss就已經推算出結果,這是一場注定徒勞的救援。」

在《流浪地球》電影中,雖說在引爆木星之後推動了地球離開木星,但是大**摧毀了地球上大部分的行星發動機。

人類再一次展開全球性救援。此時的moss已經被燒毀,現在告訴你每只救援隊的目標發動機的編號以及這只救援隊在規定時間內成功救援的概率,假如有至少k個行星發動機能夠得到重啟,則認為地球會被拯救。請你設計乙個程式,幫助人類完成這個計算。

輸入描述:

第一行給出n,m,k。n代表人類派出的救援隊總數,m代表被摧毀的行星發動機,k代表至少需要重啟的行星發動機總數。(1<=n<=1e5,k<=m<=2000)

接下來n行,每行給出ai,pi,分別代表第i支救援隊的目標發動機的編號是ai,救援成功的概率為pi。(1<=ai<=m,0<=pi<=1)

只要有乙隻救援隊順利抵達該行星發動機,則認為該發動機被成功重啟。

輸出描述:

輸出地球被救援成功的概率(請嚴格保留3位小數)

輸入3 2 2

1 11 1

2 0.5

輸出0.500

首先求出每一台發動機修好的概率, 然後用dp求出m臺發動機修好k臺以上的概率, dp[i][j]表示前i臺發動機修好j臺的概率

#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

double dp[2005][20005];

typedef long long ll;

double a[2005];

int n, m, k;

int main()

for (int i = 1; i <= m; i++)

a[i] = (1.0 - a[i]);//截止此處,為求出i發動機修好的概率a[i]

dp[1][1] = a[1];

dp[1][0] = 1.0 - a[1];

//給初始條件

for (int i = 2; i <= m; i++)

double ans = 0;

for (int i = k; i <= m; i++)

ans += dp[m][i];

printf("%.3lf\n", ans);

}

懷念我的母校 西北大學

時間過得真快,轉眼間我已經離開我的母校 西北大學2年了,至今我仍然懷念我的母校及同學 老師們。兩年前的這個時候,我們都忙於碩士 答辯,無暇在一起聊天交流,現在畢業了,反而覺得很遺憾,後悔當初怎麼沒有多一點時間在一起。回想起,自己離開母校的前一天晚上,獨自在學校走了好幾圈,明天我就要離開母校,那是多麼...

2023年西北大學校賽題解

這次其實打的不是很好,兩個小時a了七道題,但是第五題wa了42次,三個小時死磕,個人覺得並沒有任何問題,但是還是不知道為什麼錯哎。想法應該是一樣的,可能是細節問題吧。看了好久。感覺弱好弱,西交大佬都ak了。膜一發金牌爺。第乙個要補的題就是 cf 740 a。之所以要說這個是因為當時校賽就沒做出來,然...

20西北大學軟體工程專碩經驗貼

在家閒著沒事,記錄下自己考研的經歷也分享下初複試經驗。初次寫部落格,文章簡陋望海涵 心路歷程就不說了。首先要做好自己的定位,對於初試的科目是否有自己的長處和短板,疫情原因大家進度都很慢,就不詳細說了。我自己本身英語很差,四級都是擦線過得,六級幾次都沒過 遺憾 我從一月份開始就開始背單詞 推薦一下橙啦...