bzoj4832 抵制克苏恩

Posted mchmch

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj4832 抵制克苏恩相关的知识,希望对你有一定的参考价值。

题意

出门右转https://www.lydsy.com/JudgeOnline/problem.php?id=4832

题解

容易知道血量相同的奴隶主性质相同。

所以记忆化搜索就好了!

调试记录

  • 记忆化搜索时没有判断当前有没有存在某种奴隶主。

代码

#include <bits/stdc++.h>
using namespace std;

typedef long double ld;
ld dp[55][8][8][8];
ld dfs(int k,int a,int b,int c) {
    if (k == 0) return 0;
    if (dp[k][a][b][c]) return dp[k][a][b][c];
    // attack , main
    ld ret = dfs(k-1, a, b, c) + 1;
    // attack a
    if (a) ret += dfs(k-1, a-1, b, c) * a;
    // attack b
    if (b) ret += dfs(k-1, a+1, b-1, min(7-a-b, c+1)) * b;
    // attack c
    if (c) ret += dfs(k-1, a, b+1, min(6-a-b, c)) * c;
    return dp[k][a][b][c] = ret / (1 + a + b + c);
}

int main() {
    int T;
    scanf("%d", &T);
    while (T--) {
        int k, a, b, c;
        scanf("%d%d%d%d", &k, &a, &b, &c);
        if (!dfs(k, a, b, c)) printf("0.00
");
        else printf("%.2Lf
", dfs(k, a, b, c));
    }
    return 0;
}

以上是关于bzoj4832 抵制克苏恩的主要内容,如果未能解决你的问题,请参考以下文章

[BZOJ 4832][lydsy 4月赛] 抵制克苏恩

BZOJ 4832 4832: [Lydsy2017年4月月赛]抵制克苏恩 (期望DP)

[Bzoj4832][Lydsy2017年4月月赛]抵制克苏恩 (期望dp)

BZOJ4832[Lydsy2017年4月月赛]抵制克苏恩 概率与期望

bzoj4832[Lydsy1704月赛]抵制克苏恩 期望dp

BZOJ4832: [Lydsy2017年4月月赛]抵制克苏恩