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

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

生活随笔

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

编程问答

[BZOJ 1076][SCOI2008]奖励关(期望+状压Dp)

發(fā)布時(shí)間:2024/4/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [BZOJ 1076][SCOI2008]奖励关(期望+状压Dp) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Description

你正在玩你最喜歡的電子游戲,并且剛剛進(jìn)入一個(gè)獎(jiǎng)勵(lì)關(guān)。在這個(gè)獎(jiǎng)勵(lì)關(guān)里,系統(tǒng)將依次隨機(jī)拋出k次寶物,

每次你都可以選擇吃或者不吃(必須在拋出下一個(gè)寶物之前做出選擇,且現(xiàn)在決定不吃的寶物以后也不能再吃)。
?寶物一共有n種,系統(tǒng)每次拋出這n種寶物的概率都相同且相互獨(dú)立。也就是說(shuō),即使前k-1次系統(tǒng)都拋出寶物1(
這種情況是有可能出現(xiàn)的,盡管概率非常小),第k次拋出各個(gè)寶物的概率依然均為1/n。 獲取第i種寶物將得到Pi
分,但并不是每種寶物都是可以隨意獲取的。第i種寶物有一個(gè)前提寶物集合Si。只有當(dāng)Si中所有寶物都至少吃過(guò)
一次,才能吃第i種寶物(如果系統(tǒng)拋出了一個(gè)目前不能吃的寶物,相當(dāng)于白白的損失了一次機(jī)會(huì))。注意,Pi可
以是負(fù)數(shù),但如果它是很多高分寶物的前提,損失短期利益而吃掉這個(gè)負(fù)分寶物將獲得更大的長(zhǎng)期利益。 假設(shè)你
采取最優(yōu)策略,平均情況你一共能在獎(jiǎng)勵(lì)關(guān)得到多少分值?

Solution

這一步的期望=(上一步的期望+這一步的得分)/n

倒推地做會(huì)方便很多…

#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<vector> using namespace std; int k,n,p[20],s[105]; double f[105][1<<16],ans=0; int read() { int x=0,f=1;char c=getchar(); while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} return x*f; } int main() { k=read(),n=read(); for(int i=1;i<=n;i++) { p[i]=read(); int x=read(); while(x) { s[i]|=(1<<x); x=read(); } } for(int i=k;i>0;i--) for(int k=0;k<(1<<(n+1));k++) { for(int j=1;j<=n;j++) if((k&s[j])==s[j]) f[i][k]+=max(f[i+1][k],f[i+1][k|(1<<j)]+p[j]); else f[i][k]+=f[i+1][k]; f[i][k]/=n; } printf("%lf\n",f[1][0]); return 0; }

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

總結(jié)

以上是生活随笔為你收集整理的[BZOJ 1076][SCOI2008]奖励关(期望+状压Dp)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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