Codeforces Round #105 (Div. 2) D
来源:互联网 发布:java完全自学手册txt 编辑:程序博客网 时间:2024/04/26 12:14
搜索dp~注意 w 和 b 的值要大于0 ~否则会越界~
#include<iostream>#include<iomanip>#include<cstring>#include<cstdlib>#include<string>#include<vector>#include<algorithm>using namespace std;const int maxn=1024;const double eps = 1e-13;double dp[maxn][maxn];bool vis[maxn][maxn];double d2[maxn][maxn];bool v2[maxn][maxn];int ww,bb;double dwin(int w,int b);double pwin (int w,int b){ if(vis[w][b]) { return dp[w][b]; } double wx=w; double bx=b; double temp = 0.0; temp += wx / (wx + bx); temp += ( bx / ( wx + bx ) ) * ( 1.0 - dwin( w , b - 1 ) ); vis[w][b] = true; dp[w][b] = temp; return dp[w][b];}double dwin (int w,int b){ if(v2[w][b]) { return d2[w][b]; } double temp = 0.0; double tw=0.0; double tb=0.0; double wx=w; double bx=b; temp += wx / (wx+bx); if(w-1>=0 && b-1>=0) { tw = ( wx / ( wx + bx - 1.0 ) ) * ( 1.0 - pwin ( w - 1 , b - 1) ); } if(b-2>=0) { tb = ( ( bx - 1.0 ) / ( wx + bx - 1.0 ) ) * ( 1.0 - pwin ( w , b - 2 ) ); } temp += ( bx / ( wx + bx ) ) * (tw + tb); v2[w][b] = true; d2[w][b] = temp; return d2[w][b];}int main(){ memset(vis,false,sizeof(vis)); memset(v2,false,sizeof(v2)); for(int i=1;i<maxn;i++) { vis[i][0] = true; dp[i][0] = 1.0; vis[0][i] = true; dp[0][i] = 0.0; v2[i][0] = true; d2[i][0] = 1.0; v2[0][i] = true; d2[0][i] = 1.0; } v2[0][0]=vis[0][0]=true; dp[0][0]=0.0; d2[0][0]=1.0; cout.setf(ios::fixed); while(cin>>ww>>bb) { cout<<setprecision(9)<<pwin(ww,bb)<<endl; } return 0;}
- Codeforces Round #105 (Div. 2) D
- Codeforces Round #105 (Div. 2) D. Bag of mice
- Codeforces Round #105 (Div. 2) D 概率dp
- Codeforces Round #105 (Div. 2) D 概率DP
- Codeforces Round #105 (Div. 2) D. Bag of mice
- Codeforces Round #105 (Div. 2) D 概率dp
- Codeforces Round #103 (Div. 2) D
- Codeforces Round #104 (Div. 2) D
- Codeforces Round #139 (Div. 2) D. Snake
- Codeforces Round #155 (Div. 2) D-rats
- Codeforces Round #159 (Div. 2) D sum
- Codeforces Round #184 (Div. 2) D、E
- Codeforces Round#186(Div 2) D
- codeforces Round # 187(Div.2) D
- Codeforces Round #191 (Div. 2) D
- Codeforces Round #194 (Div. 2) D. Chips
- Codeforces Round #209 (Div. 2) <A-D>
- Codeforces Round #218 (Div. 2) D. Vessels
- Presentation Layer Testing Framework
- vs2010 使用dll遇到error LNK2019:错误和class wizard位置
- vs2010自定义消息与vc6.0不太一样
- dll中共享数据
- 解密微软、苹果和Google三巨头的收入构成
- Codeforces Round #105 (Div. 2) D
- c++ webservice(后续)(上传下载)
- Vim 进阶操作 一
- 如何修复MYISAM表?
- 普通网站检测浏览器是否支持格式在webkit中的实现方式
- regini.exe使用方法
- 编译并安装 OpenLDAP
- 最赞的媒体资源管理器 —— iTunes
- Perl语言中的“此处”文档