题目大意:有一个英雄和若干个所从,克苏恩会攻击$K$次,每次回随机攻击对方的一个人,造成$1$的伤害。现在对方有一名克苏恩,你有一些随从。如果克苏恩攻击了你的一名随从,若这名随从不死且你的随从数量不到$7$,这名随从会召唤一个拥有$3$点血的新随从(血量到$0$时会死亡)。已知克苏恩攻击次数,场上一血,二血,三血的随从数量,问英雄收到的伤害点数的期望。

题解:$f_{i,j,k,l}$表示还可以攻击$i$下,一血随从$j$个,二血随从$k$个,三血随从$l$个时英雄收到伤害的期望。

$$f_{i,j,k,l}=\frac{f_{i-1,j,k,l}+1+f_{i-1,j-1,k,l}\times j+f_{i-1,j+1,k-1,l+check}\times  k+f_{i-1,j,k+1,l-1+check}\times l}{j+k+l+1}\\(check为求出场上随从个数,<7返回1,否则返回0)$$

卡点:1.看成了每个随从都会召唤随从

C++ Code:

#include <cstdio>
#include <cstring>
using namespace std;
int Tim, k, a, b, c;
double f[55][8][8][8];
bool v[55][8][8][8];
int check(int a, int b, int c) {
int tmp = a + b + c;
if (tmp < 7) return 1;
return 0;
}
double dfs(int k, int a, int b, int c) {
if (k <= 0) return 0;
if (a < 0 || b < 0 || c < 0) return 0;
if (v[k][a][b][c]) return f[k][a][b][c];
double &ans = f[k][a][b][c];
ans = dfs(k - 1, a, b, c) + 1;
ans = ans + dfs(k - 1, a - 1, b, c) * a;
ans = ans + dfs(k - 1, a + 1, b - 1, c + check(a, b, c)) * b;
ans = ans + dfs(k - 1, a, b + 1, c - 1 + check(a, b, c)) * c;
ans = ans / (a + b + c + 1);
v[k][a][b][c] = true;
return ans;
}
int main() {
scanf("%d", &Tim);
while (Tim--) {
scanf("%d%d%d%d", &k, &a, &b, &c);
printf("%.2lf\n", dfs(k, a, b, c));
}
return 0;
}

  

最新文章

  1. Angular.js中使用$watch监听模型变化
  2. pythony语法小练习
  3. [nodemon] Internal watch failed: watch ENOSPC错误解决办法
  4. Java提高篇(三八)-----Java集合细节(四):保持compareTo和equals同步
  5. 软件测试之黑盒测试:打着手电寻找bug
  6. PhantomJS:基于WebKit、开源的服务器端JavaScript API
  7. 【转】Ofbiz学习经验谈
  8. show status详解
  9. 控制器view加载
  10. sublime2/3自总结经常使用快捷键(2的居多)
  11. iOS开发的一些奇巧淫技2
  12. App根据第,HTML5流行?
  13. percentiles of live data capture
  14. myeclipse 的Customize Perspective 没有反应
  15. 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred)
  16. 【数学建模】偏最小二乘回归分析(PLSR)
  17. 【Idea】IntelliJ不停地updating indices的解决办法
  18. 判断PDF文件是否相同(通过二进制流判断)
  19. 数据库镜像转移Failover Partner
  20. [android] 隐式意图和显式意图的使用场景

热门文章

  1. 在Vue项目里面使用d3.js
  2. 【ajax】ajax异步实现用户注册验证
  3. [Cracking the Coding Interview] 4.5 Validate BST
  4. 【SAPUI5】ODataを構成するもの
  5. linux io 学习笔记(02)---条件变量,管道,信号
  6. P1095 守望者的逃离
  7. 响应式js设置
  8. .NET基础知识之七&mdash;&mdash;索引器
  9. spring location设置本地路径
  10. VSCode 前端必备插件