博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces 398B 概率DP 记忆化搜索
阅读量:6513 次
发布时间:2019-06-24

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

题目:

有点似曾相识的感觉,记忆中上次那个跟这个相似的 我是用了 暴力搜索过掉的,今天这个肯定不行了,dp方程想了非常久也没有想出来,有点无从下手的感觉,最后还是尝试了一下记忆化搜索,以dp[0][0]为边界,dp[x][y]代表当前有x行y列没有彩色的 瓷砖,搜索起来思路还是非常清晰的,可惜最后那个 算期望公式给写错了,瞎了好久,做出以后看了一下别人的做法,确实有点难想到,把涂好的都放在右下角,这样就仅仅有四种情况了,瓷砖移动肯定是有影响的,后来理解了他们那意思是 划分西线把瓷砖划分到右下角去,这样 状态转移 事实上跟记忆化搜索的一模一样了,想不到那个转移,

int n,m;int xx[20000 + 55],yy[20000 + 55];double dp[2000 + 55][2000 + 55];int cntx = 0,cnty = 0;void init() {	memset(xx,0,sizeof(xx));	memset(yy,0,sizeof(yy));	memset(dp,-1,sizeof(dp));}bool input() {	while(cin>>n>>m) {		cntx = cnty = n;		for(int i=0;i
-1.0 + eps)return dp[nowx][nowy]; if(nowx == 0 && nowy == 0)return dp[nowx][nowy] = 0.00; double p = nowx * 1.0/n; double q = nowy * 1.0/n; double ans = 1.00; if(nowx != 0)ans += dfs(nowx - 1,nowy) * p * (1.0 - q); if(nowy != 0) ans += dfs(nowx,nowy - 1) * (1.0 - p) * q; if(nowx != 0 && nowy != 0)ans += dfs(nowx - 1,nowy - 1) * p * q; return dp[nowx][nowy] = ans/(1.00 - (1.0 - p) * (1.0 - q));}void cal() { double ans = dfs(cntx,cnty); printf("%.10lf\n",ans);}void output() {}int main() { while(true) { init(); if(input())return 0; cal(); output(); } return 0;}

转载地址:http://hzsfo.baihongyu.com/

你可能感兴趣的文章
git 维护
查看>>
jfinal框架下使用c3P0连接池连接sql server 2008
查看>>
struts2中使用标签操作静态方法等
查看>>
熬夜写了一个小游戏,向SpaceX聊表敬意
查看>>
apache 开启 gzip 压缩服务
查看>>
开源 免费 java CMS - FreeCMS1.5-建站向导
查看>>
jquery 1.6以上版本 全选
查看>>
AppCan 学习
查看>>
flask框架
查看>>
《疯狂Java讲义》学习笔记(十)异常处理
查看>>
ELK 5.x日志分析 (二) Elasticserach 5.2 安装
查看>>
一次奇怪的AP注册异常问题处理
查看>>
TableStore: 海量结构化数据分层存储方案
查看>>
java SpringUtil获取bean
查看>>
赛门铁克开启“容灾即服务”时代
查看>>
复杂度归纳--小结
查看>>
跨越企业的“中等收入陷阱”
查看>>
luogu P1280 尼克的任务 序列DP
查看>>
sys.check_constraints
查看>>
#define WIN32_LEAN_AND_MEAN 的作用
查看>>