hdu4336 Card Collector [容斥原理]

Description:
n 個物品,每次購買一個,有pi 的概率選到第i個物品,問獲得所有物品的期望次數。


Solution:
根據minmax 容斥,有E[max(S)]=SS(1)|S+1|E[min(S)]
E[max(S)] 表示獲得所有元素的期望,E[min(S)] 表示獲得其中一個元素的概率


#include <bits/stdc++.h>
using namespace std;
int n;
double ans;
double f[27];
void dfs(int d, double sum, int ff) {
    if(d == n + 1) {
        if(sum > 0) {
            ans += 1. / sum * ff;
        }
        return;
    }
    dfs(d + 1, sum + f[d], -ff);
    dfs(d + 1, sum, ff);
}
int main() {
    while(~scanf("%d", &n)) {
        ans = 0;
        for(int i = 1; i <= n; ++i) {
            scanf("%lf", &f[i]);
        }
        dfs(1, 0, 1);
        printf("%.6f\n", fabs(ans));
    }
    return 0;
}
發佈了102 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章