[HDU4336]:Card Collector(概率DP)】的更多相关文章

In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that, for example, if you collect all the 108 people in the famous novel Water Margin, you will win an amazing award. As a smart boy, you notice that to win t…
题意: 买东西集齐全套卡片赢大奖.每个包装袋里面有一张卡片或者没有. 已知每种卡片出现的概率 p[i],以及所有的卡片种类的数量 n(1<=n<=20). 问集齐卡片需要买东西的数量的期望值. 一开始,自己所理解的期望值是原来学过的  一个值*它自身发生的概率,这没错,但是不知道在这一题里面 那个值是多少 经过重重思考和挣扎最后明白了,这一题中,n就是那个值,也是你要求的,感觉理解这个好难,但是好重要, 此题中,将n设置为 dp[0] 可以这样想,你要买sum包,才能集齐n种卡片,那么 你最后…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4336 题意:买食品收集n个卡片,每个卡片的概率分别是pi,且Σp[i]<=1,求收集n个卡片需要买的食品数的期望. 压缩DP:把每个食品用二进制表示,0和1分别表示没有卡片和已经收集到此卡片的期望,则 f[s]=(1-Σp[i])*f[s]+Σp[j]*f[s]+Σp[k]*f[s|(1<<k)] s表示状态,i表示所有卡片编号,j表示s状态中已经有的卡片编号,k表示s状态中没有的卡片编号…
http://acm.hdu.edu.cn/showproblem.php?pid=4336 题意:有n种卡片,一个包里会包含至多一张卡片,第i种卡片在某个包中出现的次数为pi,问将所有种类的卡片集齐需要买的包的期望. 注意存在某个包中一张也没有. 分析:状态压缩有个挺显然提示,N<=20,这是在次落落的在提示你. 我们首先定义: dp[st] 表示 st 状态到目标状态 的期望是多少 : st转化为二进制0表示当前状态没有这个bit的卡片 , 1表示当前状态有这个bit位的卡片; 然后有如下的…
正解:期望 解题报告: 传送门! 先放下题意,,,已知有总共有$n$张卡片,每次有$p_i$的概率抽到第$i$张卡,求买所有卡的期望次数 $umm$看到期望自然而然想$dp$? 再一看,哇,$n\leq 20$,那不就,显然考虑状压$dp$? 转移也很$easy$鸭,设$f_{s}$表示已经获得的卡片状态为$s$时候的期望次数 不难得到转移方程,$f_s=\sum_{i\notin{S}}f_{s|\{i\}}\cdot p_i+(1-\sum_{i\notin{S}}p_i)\cdot f_s…
Card Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1708 Accepted Submission(s): 780 Special Judge Problem Description In your childhood, do you crazy for collecting the beautiful cards…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4336 Card Collector Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) 问题描述 In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that,…
Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5254    Accepted Submission(s): 2676Special Judge Problem Description In your childhood, do you crazy for collecting the beautiful…
题目传送门 题目描述 夏川的生日就要到了.作为夏川形式上的男朋友,季堂打算给夏川买一些生日礼物.商店里一共有种礼物.夏川每得到一种礼物,就会获得相应喜悦值$W_i$(每种礼物的喜悦值不能重复获得).每次,店员会按照一定的概率$P_i$(或者不拿出礼物),将第i种礼物拿出来.季堂每次都会将店员拿出来的礼物买下来.没有拿出来视为什么都没有买到,也算一次购买.众所周知,白毛切开都是黑的.所以季堂希望最后夏川的喜悦值尽可能地高.求夏川最后最大的喜悦值是多少,并求出使夏川得到这个喜悦值,季堂的期望购买次数…
Problem Description In your childhood, people in the famous novel Water Margin, you will win an amazing award. As a smart boy, you notice that to win the award, you must buy much more snacks than it seems to be. To convince your friends not to waste…
题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由于得到每张卡片的状态不知道,所以用状态压缩,dp[i] 表示这个状态时,要全部收齐卡片的期望. 由于有可能是什么也没有,所以我们要特殊判断一下.然后就和剩下的就简单了. 另一个方法就是状态压缩+容斥,同样每个状态表示收集的状态,由于每张卡都是独立,所以,每个卡片的期望就是1.0/p,然后要做的就是要去重,既然…
Problem Description In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that, for example, if you collect all the 108 people in the famous novel Water Margin, you will win an amazing award. As a smart boy, you…
//给n个卡片每次出现的概率,求全部卡片都出现的须要抽的次数的期望 //dp[i]表示在状态的情况下到全部的卡片都出现的期望 //dp[i] = 1 + p1*dp[i] + ${p2[j]*dp[i]} + ${p3[k]*dp[i^(1<<k)]} //$表示求和.p1表示没有出现卡片的概率 , p2[j]表示出现的卡片是当前状态已经出现的状态 //p3表示出现的卡片当前状态没有 //整理的dp[i] = (1 +  ${p3[k]*dp[i^(1<<k)])/${p3[k]}…
题意 题目链接 \(N\)个物品,每次得到第\(i\)个物品的概率为\(p_i\),而且有可能什么也得不到,问期望多少次能收集到全部\(N\)个物品 Sol 最直观的做法是直接状压,设\(f[sta]\)表示已经获得了\(sta\)这个集合里的所有元素,距离全拿满的期望,推一推式子直接转移就好了 主程序代码: int N; double a[MAXN], f[MAXN]; signed main() { // freopen("a.in", "r", stdin);…
题目链接 hdu4336 题解 最值反演 也叫做\(min-max\)容斥,在计算期望时有奇效 \[max\{S\} = \sum\limits_{T \in S} (-1)^{|T| + 1}min\{T\}\] 证明: 记\(S = \{a_i\}\),其中对于\(i < j\)有\(a_i < a_j\) 那么我们计算每一个\(a_i\)的贡献,有 \[ \begin{aligned} \sum\limits_{T \in S} (-1)^{|T| + 1}min\{T\} &=…
题目传送门 https://vjudge.net/problem/HDU-4336 http://acm.hdu.edu.cn/showproblem.php?pid=4336 题解 minmax 容斥模板题. 一个集合 \(S\) 的至少有一个邮票出现的最早时间是 \(\frac 1{\sum\limits_{i\in S} p_i}\). 时间复杂度 \(O(2^n)\). #include<bits/stdc++.h> #define fec(i, x, y) (int i = head…
In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that, for example, if you collect all the 108 people in the famous novel Water Margin, you will win an amazing award. As a smart boy, you notice that to win t…
显然,这题有一种很简单的做法即直接状压卡牌的状态并转移期望的次数.但我们现在有一个更加强大的工具——min-max容斥. min-max 容斥(对期望也成立):\(E[max(S)] = \sum_{T\subseteq S}^{\ }(-1)^{|T| - 1}E[min(T)]\) 我们可以让 \(E[max(S)]\) 表示 \(S\) 中所有元素均出现的期望时间(即最后一个元素出现的期望时间),\(E[min(S)]\) 表示 \(S\) 中任意一个元素出现的期望时间(即第一个元素出现的…
Card Collector Problem Description In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that, for example, if you collect all the 108 people in the famous novel Water Margin, you will win an amazing award.  As a…
Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3407    Accepted Submission(s): 1665Special Judge Problem Description In your childhood, do you crazy for collecting the beautiful…
题目链接 Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2711    Accepted Submission(s): 1277Special Judge Problem Description In your childhood, do you crazy for collecting the beaut…
[HDU4336]Card Collector(Min-Max容斥) 题面 Vjudge 题解 原来似乎写过一种状压的做法,然后空间复杂度很不优秀. 今天来补一种神奇的方法. 给定集合\(S\),设\(max\{S\}\)为\(S\)中的最大值,\(min\{S\}\)为集合\(S\)中的最小值. 那么我们可以得到: \(max\{S\}=\sum_{T\subseteq S}(-1)^{|T|+1}min\{T\}\) 证明的话,大概就是如果你钦定一个最小值,并且它强制出现, 如果枚举所有子集…
[HDU4336]Card Collector (动态规划,数学期望) 题面 Vjudge 题解 设\(f[i]\)表示状态\(i\)到达目标状态的期望 \(f[i]=(\sum f[j]*p[j]+1)/(\sum p[j])\) 直接枚举一下即可 #include<cstdio> int n; float f[1<<20],p[20]; int main() { while(scanf("%d",&n)!=EOF) { for(int i=0;i&l…
题意: 有n种卡片,每包面里面,可能有一张卡片或没有,已知每种卡片在面里出现的概率,求获得n种卡片,需要吃面的包数的期望 分析: n很小,用状压,以前做状压时做过这道题,但概率怎么推的不清楚,现在看来就是基本的概率dp dp[s]表示获得卡片种数情况是s时期望包数,dp[(1<<n)-1]=0,dp[0]就是答案 dp[s]=sum(dp[s+(1<<j)]*p[j])+1+(1-tmp)*dp[s](tmp是未吃到的卡片的概率和) 移项化简即可 #include <map&…
专题链接 第一题--poj3744 Scout YYF I  链接 (简单题) 算是递推题 如果直接推的话 会TLE 会发现 在两个长距离陷阱中间 很长一部分都是重复的 我用 a表示到达i-2步的概率 b表示到达i-1步的概率 c表示到达i步的概率 如果数很大的话 中间肯定会有重复的a,b,c 直接将i挪到最近的陷阱前一位 i = a[o]-1,大大节省时间. #include <iostream> #include<cstdio> #include<cstring>…
概率类题目一直比较弱,准备把kuangbin大师傅总结的这篇题刷一下! 我把下面的代码换成了自己的代码! 原文地址:http://www.cnblogs.com/kuangbin/archive/2012/10/02/2710606.html *************************************************************** 概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先…
http://acm.split.hdu.edu.cn/showproblem.php?pid=4336 Card Collector Special Judge Problem Description   In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that, for example, if you collect all the 108 people i…
数学期望 P=Σ每一种状态*对应的概率. 因为不可能枚举完所有的状态,有时也不可能枚举完,比如抛硬币,有可能一直是正面,etc.在没有接触数学期望时看到数学期望的题可能会觉得很阔怕(因为我高中就是这么认为的,对不起何老板了QwQ),避之不及. 但是现在发现大多数题就是手动找公式或者DP推出即可,只要处理好边界,然后写好方程,代码超级简短.与常规的求解不同,数学期望经常逆向推出. 比如常规的dp[x]可能表示到了x这一状态有多少,最后答案是dp[n].而数学期望的dp[x]一般表示到了x这一状态还…
概率dp特征: 概率DP一般求的是实际结果,在DP过程中,当前状态是由所有子状态的概率共同转移而来,所以概率DP只是利用了DP的动态而没有规划(即只需转移无需决策).-------qkoqhh A - Collecting Bugs 题意:一个软件有s个子系统,会产生n种bug.某人一天发现一个bug,这个bug属于某种bug,发生在某个子系统中. 求找到所有的n种bug,且每个子系统都找到bug,这样所要的天数的期望.需要注意的是:bug的数量是无穷大的,所以发现一个bug,出现在某个子系统的…
Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3001    Accepted Submission(s): 1435Special Judge Problem Description In your childhood, do you crazy for collecting the beautiful…