[美团 CodeM 复赛]配对游戏
来源:互联网 发布:excel获取实时股票数据 编辑:程序博客网 时间:2024/06/07 17:14
题目描述
有 nnn 个人排成一排,一开始全部面向前方,然后随机朝左或是朝右转。
然后我们不断审查这个队列,每次选择两个面对面的相邻的人,将他们从队列中取出。
例如(> 表示向右,< 表示向左):
队列 >>><<< 的消除过程为,>>><<< 到 >><< 到 >< 到空队列(每次去除一对)。队列 >><><<<> 的消除过程为,>><><<<> 到 >><<<> 到 ><<> 到 <>(每次去除一对)。
求最后期望能够剩下多少人。
DP
可以把每个人看做左右括号,那么一对匹配括号会被删除。
设f[i,j]表示做到第i个人还有j个左括号的期望,g[i,j]表示概率,转移很简单。
#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=b;i--)typedef double db;using namespace std;const int maxn=2000+10;db f[maxn][maxn],g[maxn][maxn],ans;int i,j,k,l,t,n,m;int main(){ scanf("%d",&n); f[0][0]=0; g[0][0]=1; fo(i,0,n-1) fo(j,0,n){ if (j){ f[i+1][j-1]=(f[i+1][j-1]+f[i][j]/2+g[i][j]); g[i+1][j-1]=(g[i+1][j-1]+g[i][j]/2); } else{ f[i+1][j]=(f[i+1][j]+f[i][j]/2); g[i+1][j]=(g[i+1][j]+g[i][j]/2); } f[i+1][j+1]=(f[i+1][j+1]+f[i][j]/2); g[i+1][j+1]=(g[i+1][j+1]+g[i][j]/2); } fo(i,0,n) ans+=f[n][i]; printf("%.3lf",n-ans);}
阅读全文
0 0
- [美团 CodeM 复赛]配对游戏
- 美团CodeM复赛-配对游戏(DP)
- 美团CODEM复赛 配对游戏 概率DP
- CodeM美团点评编程大赛复赛 A.配对游戏【思维+Dp】好题~
- bibreoj #6191. 「美团 CodeM 复赛」配对游戏(DP)@
- CodeM美团点评编程大赛复赛 配对游戏 概率(期望)DP
- 美团CodeM复赛 02,03
- [美团 CodeM 复赛]城市网络
- [美团 CodeM 复赛]神秘代号
- [计数] 美团 CodeM 复赛 排列
- 美团CODEM 复赛 城市网络 询问离线,树上LCA
- loj #6194. 「美团 CodeM 复赛」排列(组合数学)
- 美团点评2017年CodeM大赛-复赛 A 城市网络(倍增)
- 美团codeM比赛
- 美团CODEM 字串
- 美团CODEM 数码
- 美团codeM资格赛 优惠券
- 美团codeM资格赛 数码
- html复习2
- Spring整合Ehcache
- hdu 1358 Period(KMP之next数组)
- 1×1卷积功能
- WebView使用和遇到的问题
- [美团 CodeM 复赛]配对游戏
- APP接口设计,验证
- unity C#将excel解析为json
- [转]Java Stream API入门篇
- 类
- 记一次错误:Error:Conflict with dependency 'com.google.code.findbugs:jsr305' in project ':app'.错误!
- string 为什么是引用类型
- C++ 面试知识点总结
- 《悟透javascript》摘抄1.1