概率dp 流浪地球

2022-05-10 02:36:29 字數 1639 閱讀 2351

現在告訴你每只救援隊的目標發動機的編號以及這只救援隊在規定時間內成功救援的概率,假如有至少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位小數)

本來以為是數學題

沒想到是dp題 所以一直在錯的方向瞎搞

對每個發動機建邊 易求得當前發動機被救活的概率為1 - 所有救援隊都沒救的概率

題意求的是 只要有任意k個以上發動機被救活的概率和

dp[i][j]表示前 i 臺發動機 救援了 j 臺的概率

其概率為前 i - 1 臺中救援了 j - 1 臺然後又救援了第 j 臺,和前 i - 1 臺中救援了j臺,這台沒有救援的概率和

ld xp = dp[i - 1][j] * (1 - p[i]) + dp[i - 1][j - 1] * p[i];
完整**

/*

zeolim - an ac a day keeps the bug away

*///#pragma gcc optimize(2)

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

typedef long long ll;

typedef double ld;

const int inf = 0x3f3f3f3f;

const ld pi = acos(-1.0);

const ld e = exp(1.0);

const int maxn = 2e3 + 10;

std::vectorarr[maxn];

ld dp[maxn][maxn], p[maxn];

// dp[i][j]表示前 i臺發動機被救援 j 臺的概率

//其概率為前 i-1 臺中救援了 j-1 臺然後 救援了第 j 臺 ,前 i-1 臺中救援了j臺,這台沒有救援

int main()

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

dp[0][0] = 1.0;

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

}ld ans = 0;

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

ans += dp[m][i];

cout << fixed << setprecision(3) << ans << '\n';

return 0;

}

《流浪地球》 我們的星球

回京第一天的晚上就去耀萊五棵松店看了這部電影。作為劉慈欣迷,雖然只看過他的 三體 但是這部 流浪地球 真的震撼到了我。太好看了。劉慈欣的想象力簡直爆棚,竟然想到給地球安裝發動機,讓地球上的人類一起逃亡,太大膽了,太牛了。美國的科幻,大都是少數人,或者乙個人拯救地球,但是這部 流浪地球 是靠著人類聯合...

上海堡壘與流浪地球

然後就有人說流浪地球如何如何好。嗯?真的很好?於是就用手機看了一把。然後就有了很多感慨,記錄下來 從劇情來看,確實是美國電影套路。乙個大事情的解決,不是靠著組織的強大力量,而是因為一點的偶然事件,由一些局外人 或者說基層 把問題解決了。一方面生活中確實是有這樣的事情,另外一方面電影才有看頭。雖然這個...

流浪地球和職場的思考

過年陪女兒看了一場電影,也是最近比較火的 流浪地球 小姑娘看到一半,非要走,說太恐怖了,地球真的會這樣嗎?我不知道,也許會吧。整個故事還是比較緊湊,故事也是轉折不斷,看完後細細的捋下,雖是科幻但也確實真實。真實到你可以去套你的人生,你也可以去套你的家庭。人生太大,不到拜拜那天,確是不能活明白。家庭太...