hdu 4366 Card Collector(组合数学:容斥定理)

题意是给出买零食中奖第i个卡片的概率p[i]

求最少买多少包零食可以凑齐所有卡片

就没读懂样例是怎么来的...

据说官方解题报告写的是用如下的方法做:


后来想了下大概是这样:

0.1 0.4 

10.500

要中第一个卡片需要买1/0.1==10包零食//这里剩余的9包可能含有卡片2

要中第二个卡片需要买1/0.4==2.5包零食//这里剩余的7.5包可能含有卡片1

而10+2.5包零食中除去含有另一个卡片的情况

10+2.5-1/(0.1+0.4)==10.5

代码如下:

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

int n;
double ans, tmp;
vector vec;

void dfs(int i, double w, int k) {
    for( ; i



你可能感兴趣的:(数学/数论)