日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

HDU 4336 概率DP 状压

發(fā)布時(shí)間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 4336 概率DP 状压 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

用d(S)表示所收集到卡片種類(lèi)狀態(tài)為S時(shí)還需買(mǎi)多少包小浣熊(這是我YY的)的期望。

則有方程d(S) = 1 + (P(空) + P(有)) * d(S) + P(無(wú)) * d(T)

其中P(空)表示沒(méi)有收集到卡片,P(有)表示收集到的是已經(jīng)有的卡片,P(無(wú))表示收集到新的卡片。

而且?P(空) +?P(有) +?P(無(wú)) = 1,T表示收集到新卡片后的狀態(tài)

整理以后得到d(S) = (1 + d(T)) / P(無(wú))

1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 using namespace std; 6 7 const int maxn = 25; 8 double d[1100000]; 9 double p[1100000]; 10 11 int main() 12 { 13 int n; 14 while(scanf("%d", &n) == 1 && n) 15 { 16 for(int i = 0; i < n; i++) scanf("%lf", p + i); 17 int tot = (1 << n) - 1; 18 d[tot] = 0; 19 for(int i = tot - 1; i >= 0; i--) 20 { 21 double wu = 0; 22 d[i] = 1; 23 for(int j = 0; j < n; j++) if((i & (1 << j)) == 0) 24 { 25 wu += p[j]; 26 d[i] += p[j] * d[i | (1 << j)]; 27 } 28 d[i] /= wu; 29 } 30 printf("%.6f\n", d[0]); 31 } 32 33 return 0; 34 } 代碼君

?

轉(zhuǎn)載于:https://www.cnblogs.com/AOQNRMGYXLMV/p/4691566.html

新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!

總結(jié)

以上是生活随笔為你收集整理的HDU 4336 概率DP 状压的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。