CF16E Fish(状压+期望dp)】的更多相关文章

[传送门[(https://www.luogu.org/problemnew/show/CF16E) 解题思路 比较简单的状压+期望.设\(f[S]\)表示\(S\)这个状态的期望,转移时挑两条活着的鱼打架.时间复杂度\(O(2^n*n^2)\). 代码 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using n…
点此看题面 大致题意: 有\(n\)个点和\(m\)条边,每条边的权值是一个\(0\sim1\)的随机实数,要你用\(n-1\)条边将图联通,问这\(n-1\)条边中边权最大值的期望最小值. 提示 这题应该是一道比较难的\(DP\)题吧. 首先,我们需要注意到提示中的一句话: \(Hint\) 对于\(n\)个\([0,1]\)之间的随机变量\(x_1,x_2,...,x_n\),第\(k\)小的那个的期望值是\(\frac k{n+1}\). 其实,这就很明显在提示我们,只要求出这\(n-1\…
一般的期望dp是, dp[i] = dp[j] * p[j] + 1; 即走到下一步需要1的时间,然后加上 下一步走到目标的期望*这一步走到下一步的概率 这一题,我们将联通分块缩为一个点,因为联通块都是安全的 dp[u][s] 为当前在u,走过的联通块为s的期望天数 那么走到剩下没有走过的连通块的概率是   (n-have)/(n-1),  那么平均需要的时间是  (n-1)/(n-have), 走到下一个没有走过的连通块的概率为cnt[i] / (n-have) 所以dp[u][s] = (n…
因为每次选择都是有后效性的,直接dp肯定不行,所以需要逆推. f[i][j]表示从第i次开始,初始状态为j的期望收益 #include<cstdio> #include<cstring> #include<iostream> using namespace std; int bit[18],K,n,aa,ned[18],a[18]; double f[105][1<<17]; int main() { bit[0]=1; for(int i=1;i<=…
当前得分期望=(上一轮得分期望+这一轮得分)/m dp[i,j]:第i轮拿的物品方案为j的最优得分期望 如果我们正着去做,会出现从不合法状态(比如前i个根本无法达到j这种方案),所以从后向前推 如果当前方案j里具备了取k这个物品的条件 那么dp[i,j]+=max{dp[i+1,j],dp[i+1,j  or  1<<(k−1)]+x[k]} 否则dp[i,j]+=dp[i+1,j] #include<cstdio> #include<iostream> using n…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4336 题意: 有n种卡片(n <= 20). 对于每一包方便面,里面有卡片i的概率为p[i],可以没有卡片. 问你集齐n种卡片所买方便面数量的期望. 题解: 状态压缩. 第i位表示手上有没有卡片i. 表示状态: dp[state] = expectation (卡片状态为state时,要集齐卡片还要买的方便面数的期望) 找出答案: ans = dp[0] 刚开始一张卡片都没有. 如何转移: now:…
题意:每包干脆面可能开出卡或者什么都没有,一共n种卡,每种卡每包爆率pi,问收齐n种卡的期望 思路:期望求解公式为:$E(x) = \sum_{i=1}^{k}pi * xi + (1 - \sum_{i = 1}^{k}pi) * [1 + E(x)]$,即能转换到x情况的期望+x情况原地踏步的期望. 因为n比较小,我们可以直接状压来表示dp[x]为x状态时集齐的期望.那么显然dp[111111111] = 0.然后我们状态反向求解.最终答案为dp[0]. 然后来看期望的求解:$E(x) =…
Solution 据说正解DP30行??? 然后写了100行的状压DP?? 疯狂特判,一算极限时间复杂度过不了aaa!! 然而还是过了....QAQ 所以我定的状态是待转移的位置的前三位,用6位二进制位表示,每2位表示一个位置的状态.然后特判转移就可以了QAQ Code #include<bits/stdc++.h> #define LL long long #define mod 1000000007 #define RG register using namespace std; ]; ]…
Campus Design Nanjing University of Science and Technology is celebrating its 60th anniversary. In order to make room for student activities, to make the university a more pleasant place for learning, and to beautify the campus, the college administr…
传送门 Sol 首先状压大概是很容易想到的 一般的做法大概就是枚举每种状态然后判断转移 但是这里其实可以轮廓线dp 也就是从上到下,从左到右地放方块 假设我们现在已经放到了$(i,j)$这个位置 那么影响这个位置怎么填的其实就只有这个位置上面的位置到它左边的位置这一段的状态 于是把这一段从上到下从左往右状压起来,1表示被覆盖了,0表示没被覆盖 $f[i][j][s]$表示填到第$(i,j)$,$(i-1,j)$到$(i,j-1)$的状态为s 的方案数 转移: 原则是要把现在考虑的一行的上一行填满…