dp基础--POJ1189
来源:互联网 发布:压缩算法 pdf 编辑:程序博客网 时间:2024/06/08 18:27
POJ1189
题目链接
题目类型:dp
题解:见注释
Code:
//POJ1189//dp简单题#include <iostream>#include <cstdio>#include <cstring>#include <string>#define ll long longusing namespace std;ll gcd(ll x,ll y){ return y==0?x:gcd(y,x%y);}bool s[100][100];ll dp[100][100];int n,m;int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { for(int j=1;j<=i;j++) { char c; scanf(" %c",&c); if(c=='*') { s[i][j]=true; } else { s[i][j]=false; } } } dp[1][1]=1LL<<n;//数量代替概率,因为最后一层最多有2^n种情况 for(int i=1;i<=n+1;i++)//不要简单的,想不满足无后效性,每一个之前位置,只会对它的下一层产 //生影响,并且影响之间相互独立,最后一层一定有钉子 { for(int j=1;j<=i;j++) { if(s[i][j]) { dp[i+1][j]+=dp[i][j]/2;//把这一层的状态更新到后面,向左掉u或者向右掉 dp[i+1][j+1]+=dp[i][j]/2; dp[i][j]=0;//这一层的球掉下去了,清空 } else { dp[i+2][j+1]+=dp[i][j];//如果这一层没有钉子,把状态更新到下下层对应的位置 } } } ll x=1LL<<n; ll y=dp[n+1][m+1];//第n+1层第m个格子 ll g=gcd(x,y); printf("%lld/%lld",y/g,x/g);//分数化简 return 0;}
阅读全文
0 0
- dp基础--POJ1189
- poj1189 简单dp
- POJ1189:钉子和小球(DP)
- poj1189
- POJ1189
- POJ1189:钉子和小球(dp)
- POJ1189 HDU271 The Cow Lineup
- dp基础
- 基础DP
- 基础DP
- DP基础
- 基础DP
- 基础DP
- 基础DP
- 基础dp
- 基础dp
- DP·基础DP
- 【动态规划】poj1189 钉子和小球
- VS历史版本
- Handler的原理
- Go计算MD5和SHA1
- linux命令整理
- Selenium 相关操作
- dp基础--POJ1189
- C++(qt)游戏实战项目:坦克大战(前言)
- Linux 无图形化安装Oracle 11gr2
- 5个Java代码性能优化总结
- 每天5道面试题——003
- SQLServer初次设置sa权限步骤
- poj 1741 tree
- MySQL Workbench中的缩写含义
- Echarts实例1-折线、饼图、柱状图混搭