【bzoj4832】[Lydsy2017年4月月赛]抵制克苏恩 概率期望dp
题目描述
你分别有a、b、c个血量为1、2、3的奴隶主,假设英雄血量无限,问:如果对面下出一个K点攻击力的克苏恩,你的英雄期望会受到到多少伤害。
输入
输出
对于每局游戏,输出一个数字表示总伤害的期望值,保留两位小数。
样例输入
1
1 1 1 1
样例输出
0.25
题解
概率期望dp
一开始直接上了复杂度多了K的概率dp然后T死了。。。
由于期望具有可加性,因此不需要维护受到伤害为某值的各种情况,而是维护其期望值。
设$f[i][j][k][l]$表示前$i$次攻击,分别剩下$j$、$k$、$l$个血量为1、2、3的奴隶主时受到伤害的期望。那么直接考虑这次攻击的情况直接转移即可。
注意此时我们设的是总情况下的期望,因此在英雄受到伤害时期望值的增加应该为 概率*取值 ,取值为1,因此需要加上概率。所以再维护一个某情况的概率值即可。
时间复杂度$O(TK·8^3)$
注意千万不要把代码码错!(转移那里码错WA了无数次QAQ)
#include <cstdio>
#include <cstring>
double p[55][8][8][8] , f[55][8][8][8];
int main()
{
int T;
scanf("%d" , &T);
while(T -- )
{
memset(p , 0 , sizeof(p)) , memset(f , 0 , sizeof(f));
int n , a , b , c , i , j , k , l;
double ans = 0;
scanf("%d%d%d%d" , &n , &a , &b , &c) , p[0][a][b][c] = 1;
for(i = 0 ; i < n ; i ++ )
{
for(j = 0 ; j <= 7 ; j ++ )
{
for(k = 0 ; k <= 7 ; k ++ )
{
for(l = 0 ; l <= 7 ; l ++ )
{
p[i + 1][j][k][l] += p[i][j][k][l] / (1 + j + k + l) , f[i + 1][j][k][l] += (f[i][j][k][l] + p[i][j][k][l]) / (1 + j + k + l);
if(j) p[i + 1][j - 1][k][l] += p[i][j][k][l] * j / (1 + j + k + l) , f[i + 1][j - 1][k][l] += f[i][j][k][l] * j / (1 + j + k + l);
if(k)
{
if(j + k + l == 7) p[i + 1][j + 1][k - 1][l] += p[i][j][k][l] * k / (1 + j + k + l) , f[i + 1][j + 1][k - 1][l] += f[i][j][k][l] * k / (1 + j + k + l);
else p[i + 1][j + 1][k - 1][l + 1] += p[i][j][k][l] * k / (1 + j + k + l) , f[i + 1][j + 1][k - 1][l + 1] += f[i][j][k][l] * k / (1 + j + k + l);
}
if(l)
{
if(j + k + l == 7) p[i + 1][j][k + 1][l - 1] += p[i][j][k][l] * l / (1 + j + k + l) , f[i + 1][j][k + 1][l - 1] += f[i][j][k][l] * l / (1 + j + k + l);
else p[i + 1][j][k + 1][l] += p[i][j][k][l] * l / (1 + j + k + l) , f[i + 1][j][k + 1][l] += f[i][j][k][l] * l / (1 + j + k + l);
}
}
}
}
}
for(i = 0 ; i <= 7 ; i ++ )
for(j = 0 ; j <= 7 ; j ++ )
for(k = 0 ; k <= 7 ; k ++ )
ans += f[n][i][j][k];
printf("%.2lf\n" , ans);
}
return 0;
}
【bzoj4832】[Lydsy2017年4月月赛]抵制克苏恩 概率期望dp的更多相关文章
- [Bzoj4832][Lydsy2017年4月月赛]抵制克苏恩 (期望dp)
4832: [Lydsy2017年4月月赛]抵制克苏恩 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 673 Solved: 261[Submit][ ...
- 【BZOJ 4832 】 4832: [Lydsy2017年4月月赛]抵制克苏恩 (期望DP)
4832: [Lydsy2017年4月月赛]抵制克苏恩 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 275 Solved: 87 Descripti ...
- 【BZOJ4832】[Lydsy2017年4月月赛]抵制克苏恩 概率与期望
[BZOJ4832][Lydsy2017年4月月赛]抵制克苏恩 Description 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平.如果你不玩炉石传说,不必担心,小Q同学会告诉 ...
- BZOJ4832: [Lydsy2017年4月月赛]抵制克苏恩
传送门 题目大意: 攻击k次,每次可攻击随从或英雄. 随从数不大于7个,且1滴血的a个,2滴b个,3滴c个. 攻击一次血-1,如果随从没死可以生成3滴血随从一个 题解: 概率/期望dp f[i][j] ...
- [补档][Lydsy2017年4月月赛]抵制克苏恩
[Lydsy2017年4月月赛]抵制克苏恩 题目 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平. 如果你不玩炉石传说,不必担心,小Q同学会告诉你所有相关的细节.炉石传说是这样的一 ...
- [BZOJ4832]抵制克苏恩(概率期望DP)
方法一:倒推,最常规的期望DP.f[i][a][b][c]表示还要再攻击k次,目前三种随从个数分别为a,b,c的期望攻击英雄次数,直接转移即可. #include<cstdio> #inc ...
- 【BZOJ 4832】 [Lydsy2017年4月月赛] 抵制克苏恩 期望概率dp
打记录的题打多了,忘了用开维记录信息了......我们用f[i][j][l][k]表示已经完成了i次攻击,随从3血剩j个,2血剩l个,1血剩k个,这样我们求出每个状态的概率,从而求出他们对答案的贡献并 ...
- [Lydsy2017年4月月赛]抵制克苏恩题解
考试的时候以为就是简单的概率期望题,考完后知道是简单的概率期望DP题,完美爆零. 这道题数据范围很小,很容易让人想到状压,不过貌似没什么可压的.那么只能说明这道题复杂度很高了,状态数组f[o][i][ ...
- bzoj 4832 抵制克苏恩 概率期望dp
考试时又翻车了..... 一定要及时调整自己的思路!!! 随从最多有7个,只有三种,所以把每一种随从多开一维 so:f[i][j][k][l]为到第i次攻击前,场上有j个1血,k个2血,l个3血随从的 ...
随机推荐
- Solr第一讲——概述与入门
一.solr介绍 1.什么是solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr可以独立运行在Jetty.Tomcat等这些Serv ...
- WPF程序,运行时,结束时,要运行的操作(自动保存,检查单程序)
/// <summary> /// App.xaml 的交互逻辑 /// </summary> public partial class App : Application { ...
- EnterpriseDB公司的 Postgres Solution Pack (一)
下载地址: http://www.enterprisedb.com/products-services-training/products/postgres-plus-solution-pack/do ...
- 解决CentOS下可以ping通ip ping不通域名
现象:1. ping不通域名,比如 www.qq.com 2. 可以ping通ip,比如 61.135.157.156 分析:1. 查看DNS配置文件 /etc/resolve.conf, 里面的服务 ...
- android 学习四 ContentProvider
1.系统自带的许多数据(联系人,本地信息等)保存在sqllite数据库,然后封装成许多ContentProvider来供其他程序访问. 2.对sqllite数据库的操作,可以在命令行通过adb工具登录 ...
- 基于Python的接口自动化
第一步 Python的安装配置 打开官网: https://www.python.org/downloads/ 目前官网上已经更新到3.6.1啦,有两个版本,大家可以按自己喜欢的去下载,我自己选择的是 ...
- IntelliJ IDEA 新建项目
一 新建一个Java项目 二 新建一个Web项目 三 新建一个Maven项目 四 web.xml常见版本 <?xml version="1.0" encoding=" ...
- labview--http协议数据交互
最近接了一个项目,需求是要将采集到的数据,以以下要求上报,并且提供接口供上层系统下发指令. 采用restful的http协议进行交互: 输入输出参数皆为json体. 响应包含三部分: Code:业务码 ...
- TW实习日记:第11、12天
这两天其实都在做一件事,项目组组长丢了个需求下来,要求完成一个百度地图api的页面.原本以为和之前写微信接口的类似,没想到这次问题这么多.并且在写代码的时候和组长交流不畅导致心情也很差,深刻的反思了一 ...
- HTML+JS = 网站注册界面源代码
本注册页面未设置编码方式和兼容性,已测试,在Chrome浏览器显示正常 <!DOCTYPE html> <html> <head> <title>注册页 ...