bzoj 4832 抵制克苏恩 概率期望dp
考试时又翻车了.....
一定要及时调整自己的思路!!!
随从最多有7个,只有三种,所以把每一种随从多开一维
so:f[i][j][k][l]为到第i次攻击前,场上有j个1血,k个2血,l个3血随从的概率
最后利用期望的可加性都加起来就好了
ps.30滴血受到四五十伤害,完全tm不符合逻辑啊,mdzz!!!
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int T,a,b,c,n;
double f[55][8][8][8],ans;
int main()
{
//freopen("defcthun.in","r",stdin);
//freopen("defcthun.out","w",stdout);
scanf("%d",&T);
for(int i=1;i<=T;i++)
{
scanf("%d%d%d%d",&n,&a,&b,&c);
ans=0; memset(f,0,sizeof f);
f[1][a][b][c]=1;
for(int i=1;i<=n;i++)
for(int j=0;j<=7;j++)
for(int k=0;k<=7;k++)
for(int l=0;l<=7;l++){
if(!f[i][j][k][l]) continue;
ans+=(double)f[i][j][k][l]*1.0/(1.0+j+k+l);
if(i==n) continue;
f[i+1][j][k][l]+=(double)f[i][j][k][l]*1.0/(1.0+j+k+l);
if(j>0) f[i+1][j-1][k][l]+=(double)f[i][j][k][l]*j/(1.0+j+k+l);
if(k>0){
if(j+k+l==7) f[i+1][j+1][k-1][l]+=(double)f[i][j][k][l]*k/(1.0+j+k+l);
else f[i+1][j+1][k-1][l+1]+=(double)f[i][j][k][l]*k/(1.0+j+k+l);
}
if(l>0){
if(j+k+l==7) f[i+1][j][k+1][l-1]+=(double)f[i][j][k][l]*l/(1.0+j+k+l);
else f[i+1][j][k+1][l]+=(double)f[i][j][k][l]*l/(1.0+j+k+l);
}
}
printf("%0.2lf\n",ans);
}
return 0;
}
bzoj 4832 抵制克苏恩 概率期望dp的更多相关文章
- 【bzoj4832】[Lydsy2017年4月月赛]抵制克苏恩 概率期望dp
题目描述 你分别有a.b.c个血量为1.2.3的奴隶主,假设英雄血量无限,问:如果对面下出一个K点攻击力的克苏恩,你的英雄期望会受到到多少伤害. 输入 输入包含多局游戏. 第一行包含一个整数 T (T ...
- [BZOJ4832]抵制克苏恩(概率期望DP)
方法一:倒推,最常规的期望DP.f[i][a][b][c]表示还要再攻击k次,目前三种随从个数分别为a,b,c的期望攻击英雄次数,直接转移即可. #include<cstdio> #inc ...
- 【BZOJ 4832 】 4832: [Lydsy2017年4月月赛]抵制克苏恩 (期望DP)
4832: [Lydsy2017年4月月赛]抵制克苏恩 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 275 Solved: 87 Descripti ...
- [Bzoj4832][Lydsy2017年4月月赛]抵制克苏恩 (期望dp)
4832: [Lydsy2017年4月月赛]抵制克苏恩 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 673 Solved: 261[Submit][ ...
- bzoj 2510: 弱题 概率期望dp+循环矩阵
题目: Description 有M个球,一开始每个球均有一个初始标号,标号范围为1-N且为整数,标号为i的球有ai个,并保证Σai = M. 每次操作等概率取出一个球(即取出每个球的概率均为1/M) ...
- 【专题】概率期望DP
11.22:保持更新状态:主要发一些相关的题目和个人理解 (P.S.如果觉得简单,可以直接看后面的题目) upd 11.30 更完了 [NO.1] UVA12230 Crossing Rivers ...
- 【BZOJ-1419】Red is good 概率期望DP
1419: Red is good Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 660 Solved: 257[Submit][Status][Di ...
- 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp
题目描述 n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 输入 一行一个正整数 n . 输出 一行一个实数,表示期望剩下的人数, ...
- bzoj 2969: 矩形粉刷 概率期望
题目: 为了庆祝新的一年到来,小M决定要粉刷一个大木板.大木板实际上是一个W*H的方阵.小M得到了一个神奇的工具,这个工具只需要指定方阵中两个格子,就可以把这两格子为对角的,平行于木板边界的一个子矩形 ...
随机推荐
- Java IO学习--(五)字节和字符数组
内容列表 从InputStream或者Reader中读入数组 从OutputStream或者Writer中写数组 在java中常用字节和字符数组在应用中临时存储数据.而这些数组又是通常的数据读取来源或 ...
- CSS3概述
首先我们了解下什么是css3,css3是css技术的一个升级.css3中并没有采用总体结构,而是采用分工协作的模块化结构. css3中的模块 模块名称 功能描述 basic box model 定义各 ...
- angular中的jqLite的基本使用方法
angular.element() 参数要求是HTML string or DOMElement, angular.element 虽然很接近 jQuery,但是直接通过 HTML tag 去获取元素 ...
- Python_让人脑阔疼的编码问题(转)+(整理)
我们要知道python内部使用的是unicode编码,而外部却要面对千奇百怪的各种编码,比如作为中国程序经常要面对的gbk,gb2312,utf8等,那这些编码是怎么转换成内部的unicode呢? 首 ...
- Java——面向对象
面向对象和面向过程的区别:面向对象,强调的是对象即实体:面向过程强调的是过程,即动作. 面向对象的特点:1,将复杂的问题简单化 2,更符合人们的思考习惯 3,让曾经的在过程中的执行者,变成了指挥者. ...
- .net找List1和List2的差集
有个需求是找两个自定义类泛型集合的差集: class Person { public string Name{get; set;} public string Country{get; set;} } ...
- Jmeter4.0版本实现背景色切换
今天下载了Jmeter4.0新版本,看着这高大上的黑曜石般的界面,着实不适应. 尤其是在右击,希望enable和disable一个线程组时候,老眼昏花,不太看得清楚哪一个是灰色的不能点击 花了时间看了 ...
- Java Selenium 定位元素 实现的一个注册功能
import java.util.List; import java.util.concurrent.TimeUnit; import org.openqa.selenium.Alert; impor ...
- SpringBoot整合ElasticSearch实现多版本的兼容
前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和Spring ...
- Visual Studio Community 2013,功能完整,免费使用
http://www.infoq.com/cn/news/2014/11/VSC2013 微软刚刚宣布了.NET平台的开源计划,与此同时,它还推出了源自Visual Studio Profession ...