博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Bzoj2246]迷宫探险(概率+DP)
阅读量:5893 次
发布时间:2019-06-19

本文共 1540 字,大约阅读时间需要 5 分钟。

Description

Solution

用三进制表示陷阱状态,1表示有害,2表示无害,0表示不知道

\(f[S][i]\)表示状态为S时陷阱i有害的概率,这个可以预处理出

\(d[S][i][j][h]\)表示状态为S,在坐标\((i,j)\),血量为h时的答案

然后就可以DP了,记忆化搜索

Code

#include 
#include
#define db double#define Sta 300#define N 36using namespace std;const int dx[]={0,0,1,-1};const int dy[]={1,-1,0,0};db dp[Sta][N][N][6],f[Sta][N];int n,m,k,h,p[N],sx,sy,A[6]; char g[N][N];inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}db tmp[2];void dfs(int x){ if(x==k){ int S=0; for(int i=k-1;i>=0;--i) S=S*3+A[i]; for(int i=0;i
>l)&1)){flag=1;break;} if(flag) continue; tmp[(j>>i)&1]+=p[j]; } f[S][i]=tmp[1]/(tmp[1]+tmp[0]); } }else for(int i=0;i<=2;++i){A[x]=i;dfs(x+1);}}int Change(int S,int pos,int x){ for(int i=0;i
=0;--i) S=S*3+A[i]; return S;} db DP(int S,int x,int y,int h){ if(!h) return 0; if(g[x][y]=='@') return 1; db &tmp=dp[S][x][y][h]; if(tmp!=-1) return tmp; tmp=0; for(int d=0;d<4;++d){ int nx=x+dx[d],ny=y+dy[d],tS=S; if(nx<=0||ny<=0||nx>n||ny>m) continue; char ch=g[nx][ny]; if(ch=='#') continue; else if(ch=='.'||ch=='$'||ch=='@') tmp=max(tmp,DP(S,nx,ny,h)); else if(ch>='A'&&ch<='Z'){ int id=ch-'A'; for(int i=0;i

转载于:https://www.cnblogs.com/void-f/p/8715813.html

你可能感兴趣的文章
Swift 4.2进入最后开发阶段,为Swift 5铺平道路
查看>>
从初创型到独角兽企业,监控架构演进的那些事儿
查看>>
Spark Streaming 作者,Alluxio 的创始人李浩源:AI 潮流对做数据存储业务公司的挑战...
查看>>
专访《Haskell函数式编程入门》作者张淞:浅谈Haskell的优点与启发
查看>>
Go语言很好很强大,但我有几个问题想吐槽
查看>>
Facebook计划整合WhatsApp、Instagram和Messenger的基础设施
查看>>
“理解数据科学”系列文章
查看>>
每日7千次的跨部门任务调度,有赞怎么设计大数据开发平台?
查看>>
小米自动化运维平台演进设计思路
查看>>
《敏捷时代》作者访谈录
查看>>
Java社区领袖介绍平台支持选项
查看>>
微软混合现实设备HoloLens 2惊艳发布,售价2.4万人民币
查看>>
美团点评CTO罗道锋确认离职,新东家是快手?
查看>>
从“野路子”到“正规军”的软件开发之路
查看>>
都说AIOps是必然趋势,那实践AIOps之前需要做些什么准备?\n
查看>>
回应抗议,JetBrains放宽了许可条款
查看>>
腾讯开源手游热更新方案,Unity3D下的Lua编程
查看>>
Steve Thair谈DevOps on Windows的演变与面临的挑战
查看>>
Uber开源TensorFlow框架工具箱Ludwig,无需编码即可进行深度学习开发
查看>>
社区OpenJDK代码构建平台投入使用
查看>>