bzoj1076

来源:互联网 发布:新页进销存软件免费 编辑:程序博客网 时间:2024/06/08 10:34

就不粘题面了

这里写图片描述这么简单一个递推求期望的题,花了我好长时间。。。

我一直是想正着怎么推的这里写图片描述,没想出来,所以应该倒着推
n 很小,自然想到状压
然后大家看代码吧。。。

#include<bits/stdc++.h>using namespace std;inline int read(void){    int x = 0, c, f = 1;    do {c=getchar();if(c=='-')f=-1;}while(c<'0'||c>'9');    do {x=x*10+c-'0';c=getchar();}while(c>='0'&&c<='9');    return x * f;}typedef long long LL;double f[120][32778];int n, K, pre[5000], val[20], tot;int main(){    K = read(), n = read();    tot = 1 << n;    for (int i = 1, x; i <= n; i++) {        val[i] = read();        while (x = read()) pre[i] |= 1 << x - 1;    }    for (int i = K; i; i--)        for (int j = 0; j < tot; j++) {            for (int k = 1; k <= n; k++)                f[i][j] += ((j & pre[k]) == pre[k]) ? max(f[i+1][j], f[i+1][j | (1 << k - 1)] + val[k]) : f[i+1][j];            f[i][j] /= n;        }    printf("%.6lf",f[1][0]);}
1 0
原创粉丝点击