【期望dp】bzoj4832: [Lydsy1704月赛]抵制克苏恩
这个题面怎么这么歧义……
Description
Input
Output
对于每局游戏,输出一个数字表示总伤害的期望值,保留两位小数。
题目分析
期望dp是真的太不熟了……暴力都能打挂。
#include<cstdio> int T,k,a,b,c;
double ans; void dfs(int done, int n1, int n2, int n3, int bld, double sta)
{
if (done==k||!bld) return;
if (n1) dfs(done+, n1-, n2, n3, bld, sta*n1/(n1+n2+n3+1.0));
if (n2){
if (n1+n2+n3 < )
dfs(done+, n1+, n2-, n3+, bld, sta*n2/(n1+n2+n3+1.0));
else dfs(done+, n1+, n2-, n3, bld, sta*n2/(n1+n2+n3+1.0));
}
if (n3){
if (n1+n2+n3 < )
dfs(done+, n1, n2+, n3, bld, sta*n3/(n1+n2+n3+1.0));
else dfs(done+, n1, n2+, n3-, bld, sta*n3/(n1+n2+n3+1.0));
}
ans += sta/(n1+n2+n3+1.0);
dfs(done+, n1, n2, n3, bld, sta/(n1+n2+n3+1.0));
}
int main()
{
freopen("cthun.in","r",stdin);
freopen("cthun.out","w",stdout);
scanf("%d",&T);
while (T--)
{
ans = ;
scanf("%d%d%d%d",&k,&a,&b,&c);
dfs(, a, b, c, , 1.0);
printf("%.2lf\n",ans);
}
return ;
}
这个是暴力。标红部分意味着:对于n个奴隶主,攻击他们其中一个是不相同的,所以转移到这个状态的概率要乘n。
那么期望dp通常来说状态是倒着表示的:$f[t][i][j][k]$表示初始状态为$(t,i,j,k)$,最终的获得期望是多少。这样做的好处在于,可以预处理出所有的初始状态,并且转移时候会更加方便,不需要记录转移的概率。
所以这也算是一个需要灵活应用的点吧。
#include<cstdio>
#include<cctype> int T,k,a,b,c;
double f[][][][]; int read()
{
int num = ;
bool fl = ;
char ch = getchar();
for (; !isdigit(ch); ch=getchar())
if (ch=='-') fl = ;
for (; isdigit(ch); ch=getchar())
num = (num<<)+(num<<)+ch-;
if (fl) num = -num;
return num;
}
int main()
{
freopen("cthun.in","r",stdin);
freopen("cthun.out","w",stdout);
for (int t=; t<=; t++)
for (int i=; i<=; i++)
for (int j=; i+j<=; j++)
for (int k=; i+j+k<=; k++)
{
double sum = i+j+k+1.0;
f[t][i][j][k] += (f[t-][i][j][k]+)/sum;
f[t][i][j][k] += f[t-][i-][j][k]*i/sum;
if (i+j+k < )
f[t][i][j][k] += f[t-][i+][j-][k+]*j/sum,
f[t][i][j][k] += f[t-][i][j+][k]*k/sum;
else
f[t][i][j][k] += f[t-][i+][j-][k]*j/sum,
f[t][i][j][k] += f[t-][i][j+][k-]*k/sum;
}
T = read();
while (T--) printf("%.2lf\n",f[read()][read()][read()][read()]);
return ;
}
END
【期望dp】bzoj4832: [Lydsy1704月赛]抵制克苏恩的更多相关文章
- BZOJ4832[Lydsy1704月赛]抵制克苏恩——期望DP
题目描述 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平.如果你不玩炉石传说,不必担心,小Q 同学会告诉你所有相关的细节.炉石传说是这样的一个游戏,每个玩家拥有一个 30 点血量的 ...
- BZOJ4832: [Lydsy1704月赛]抵制克苏恩(期望DP)
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 913 Solved: 363[Submit][Status][Discuss] Description ...
- BZOJ4832: [Lydsy1704月赛]抵制克苏恩(记忆化&期望)
Description 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平.如果你不玩炉石传说,不必担心,小Q 同学会告诉你所有相关的细节.炉石传说是这样的一个游戏,每个玩家拥有一个 ...
- BZOJ4832: [Lydsy1704月赛]抵制克苏恩 (记忆化搜索 + 概率DP)
题意:模拟克苏恩打奴隶战对对方英雄所造成的伤害 题解:因为昨(今)天才写过记忆化搜索 所以这个就是送经验了 1A还冲了个榜 但是我惊奇的发现我数组明明就比数据范围开小了啊??? #include &l ...
- [bzoj4832][Lydsy1704月赛]抵制克苏恩
题目大意:有一个英雄和若干个所从,克苏恩会攻击$K$次,每次回随机攻击对方的一个人,造成$1$的伤害.现在对方有一名克苏恩,你有一些随从.如果克苏恩攻击了你的一名随从,若这名随从不死且你的随从数量不到 ...
- 【bzoj4832】[Lydsy1704月赛]抵制克苏恩 期望dp
Description 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平.如果你不玩炉石传说,不必担心,小Q 同学会告诉你所有相关的细节.炉石传说是这样的一个游戏,每个玩家拥有一个 ...
- BZOJ.4832.[Lydsy1704月赛]抵制克苏恩(期望DP)
题目链接 \(f[s][i][j][k]\)表示还剩\(s\)次攻击,分别有\(i,j,k\)个血量为\(1,2,3\)的奴隶主时,期望受到伤害. 因为期望是倒推,所以这么表示从后往前求,注意\(a, ...
- [Bzoj4832][Lydsy2017年4月月赛]抵制克苏恩 (期望dp)
4832: [Lydsy2017年4月月赛]抵制克苏恩 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 673 Solved: 261[Submit][ ...
- 【BZOJ4832】[Lydsy2017年4月月赛]抵制克苏恩 概率与期望
[BZOJ4832][Lydsy2017年4月月赛]抵制克苏恩 Description 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平.如果你不玩炉石传说,不必担心,小Q同学会告诉 ...
随机推荐
- MySQL库相关操作
========MySQL库相关操作====== 一.系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信 ...
- 优化MyEclipse编译速度慢的问题
转载大神的 https://www.cnblogs.com/luxd/p/5999217.html
- url、src与href属性的区别
http://blog.csdn.net/rickgreen/article/details/54943500
- 练习三十:Python回文数判断编程练习。
说到回文数,大家可能会比较的陌生,但是在我们的日常生活中常会遇到这样的数字,只是你不知道它是回文数罢了. 例如:12321,这组数字就是回文数. 设n是一任意自然数.若将n的各位数字反向排列所得自然数 ...
- linux-ubuntu下调出中文输入法
linux-ubuntu下调出中文输入法 注:此方法我并没有亲身实践过,只是觉得可能会用到,所以保存一下
- nuxt实践
利用手脚架搭起来的服务端渲染实例目录结构.nuxtassets 未编译的静态资源如 LESS.SASS 或 JavaScriptcomponents 用于组织应用的 Vue.js 组件middlewa ...
- linux文件系统和目录树的关系
文件系统是和底层的硬件系统紧密关联的,文件系统相当于是dev(设备或硬件)在Linux上面的显示,如/dev/hdc2 而目录树是逻辑的概念,其可以通过挂载的方式连接文件系统,先用df查看本地的文件系 ...
- dao层写展示自己需要注意的问题
写dao层时一定要把 News news=new News(); 写在while循环内,是每循环一次,new出一个对象
- To the world you may be one person, but to one person you may be the world.
To the world you may be one person, but to one person you may be the world.对于世界而言,你是一个人:但对于某人而言,你是他的 ...
- Ubuntu 12.04源
deb http://ubuntu.uestc.edu.cn/ubuntu/ precise main restricted universe multiverse deb http://ubuntu ...