hdu--4336--概率dp
2014-11-27 13:18
302 查看
其实 概率dp最后得到的期望 你是 顺序递推 还是 逆序递推 就是取决于你对于 dp[x]这个数组是如何去定义的
这边 逆序递推的 思想 可以去看下
传送 感觉这篇博客下方的评论 讲得还可以
至于顺序递推的 可以参照下 porker给我的这个公式
View Code
他们实在很相似 就是定义与转移的区别 想起来 真的狠头痛 ..;
这边 在放一个XX论文的题目 但他那边没给出状态转移 我这边也写下
„„在2003年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字。只要凑齐所有百事球星的名字,就可以参加百事世界杯之旅的抽奖活动,获取球星背包、随身听,更可以赴日韩观看世界杯。还不赶快行动!„„” 你关上电视,心想:假设有n个不同球星的名字,每个名字出现的概率相同,平均需要买几瓶饮料才能凑齐所有的名字呢?
dp[0] = 0
dp[x] = (n-x)/n*dp[x] + x/n*dp[x-1]+1
dp[x] = dp[x-1]+n/x;
dp(0)=0
dp(1)=dp(0)+n/1
dp(2)=dp(1)+n/2
.....
dp(n)=dp(n-1)+n/n
可以得到dp
= n * (1/1+1/2+1/3+...1/n)
或者
dp
=0
dp[x] = x/n*dp[x]+(n-x)/n*dp[x+1]+1
dp[x] = dp[x+1]+n/(n-x)
这边 逆序递推的 思想 可以去看下
传送 感觉这篇博客下方的评论 讲得还可以
至于顺序递推的 可以参照下 porker给我的这个公式
#include <iostream> #include <iomanip> using namespace std; int n; const int size = 25; double p[size]; double dp[1<<size]; void solve( ) { double sum , sumP; for( int i = 1 ; i<=(1<<n)-1 ; i++ ) { sum = sumP = 0; for( int j = 0 ; j<n ; j++ ) { if( ( i & (1<<j) ) == 0 ) { continue; } sum += p[j] * dp[ i ^ (1<<j) ]; sumP += p[j]; } dp[i] = ( sum + 1.0 ) / sumP; } } int main() { cin.sync_with_stdio(false); while( cin >> n ) { for( int i = 0 ; i<n ; i++ ) { cin >> p[i]; } dp[0] = 0; solve( ); cout << setiosflags(ios::fixed); cout << setprecision(5) << dp[(1<<n)-1] << endl; } return 0; }
View Code
他们实在很相似 就是定义与转移的区别 想起来 真的狠头痛 ..;
这边 在放一个XX论文的题目 但他那边没给出状态转移 我这边也写下
„„在2003年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字。只要凑齐所有百事球星的名字,就可以参加百事世界杯之旅的抽奖活动,获取球星背包、随身听,更可以赴日韩观看世界杯。还不赶快行动!„„” 你关上电视,心想:假设有n个不同球星的名字,每个名字出现的概率相同,平均需要买几瓶饮料才能凑齐所有的名字呢?
dp[0] = 0
dp[x] = (n-x)/n*dp[x] + x/n*dp[x-1]+1
dp[x] = dp[x-1]+n/x;
dp(0)=0
dp(1)=dp(0)+n/1
dp(2)=dp(1)+n/2
.....
dp(n)=dp(n-1)+n/n
可以得到dp
= n * (1/1+1/2+1/3+...1/n)
或者
dp
=0
dp[x] = x/n*dp[x]+(n-x)/n*dp[x+1]+1
dp[x] = dp[x+1]+n/(n-x)
相关文章推荐
- HDU 4336 概率DP求期望(or容斥原理)
- hdu 4336 概率and数位DP
- HDU 4336 Card Collector 状压+概率dp
- HDU 4336 Card Collector (状压+概率DP)
- hdu 4336 Card Collector 概率DP 状态压缩DP
- [HDU 4336]Card Collection[状态压缩DP][概率DP][容斥原理]
- hdu 4336 Card Collector(概率dp, 容斥原理)
- hdu - 4336 - Card Collector - 容斥 || 概率dp
- Hdu 4336 Card Collector (状态概率DP|容斥原理)
- [HDU 4336] Card Collector (状态压缩概率dp)
- hdu 4336 Card Collector (概率dp)
- HDU - 4336 Card Collector(概率dp)
- hdu-4336-Card Collector-概率DP
- HDU 4336 Card Collector (概率DP 或 容斥原理)
- HDU-4336 Card Collector 概率DP
- HDU-4336 Card Collector 容斥定理 Or 概率DP
- HDU 4336 Card Collector(动态规划-概率DP)
- hdu 4336 Card Collector 概率dp+状态压缩
- HDU 4336 Card Collector 概率dp 状态压缩| 容斥原理
- hdu 4336 概率dp