钉子和小球
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 7218   Accepted: 2164

Description

有一个三角形木板,竖直立放,上面钉着n(n+1)/2颗钉子,还有(n+1)个格子(当n=5时如图1)。每颗钉子和周围的钉子的距离都等于d,每个格子的宽度也都等于d,且除了最左端和最右端的格子外每个格子都正对着最下面一排钉子的间隙。
让一个直径略小于d的小球中心正对着最上面的钉子在板上自由滚落,小球每碰到一个钉子都可能落向左边或右边(概率各1/2),且球的中心还会正对着下一颗将要碰上的钉子。例如图2就是小球一条可能的路径。
我们知道小球落在第i个格子中的概率pi=pi=,其中i为格子的编号,从左至右依次为0,1,...,n。
现在的问题是计算拔掉某些钉子后,小球落在编号为m的格子中的概率pm。假定最下面一排钉子不会被拔掉。例如图3是某些钉子被拔掉后小球一条可能的路径。

Input

第1行为整数n(2 <= n <= 50)和m(0 <= m <= n)。以下n行依次为木板上从上至下n行钉子的信息,每行中'*'表示钉子还在,'.'表示钉子被拔去,注意在这n行中空格符可能出现在任何位置。

Output

仅一行,是一个既约分数(0写成0/1),为小球落在编号为m的格子中的概pm。既约分数的定义:A/B是既约分数,当且仅当A、B为正整数且A和B没有大于1的公因子。

Sample Input

5 2
** .* * ** . * *
* * * * *

Sample Output

7/16

Source

Noi 99

状态转移方程:

if(tar[i][j]=='*'){

ans[i+1][j]=ans[i+1][j]+(ans[i][j]>>1);

ans[i+1][j+1]=ans[i+1][j+1]+(ans[i][j]>>1);

}

else{

ans[i+2][j+1]=ans[i+2][j+1]+ans[i][j];

}

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cstdlib>
 5 #include<algorithm>
 6 #define LL long long
 7 using namespace std;
 8
 9 const int inf=0x3fffffff;
10 const int maxn=57;
11 char tar[maxn][maxn];
12 long long fm,fz,ubt,ans[maxn][maxn];
13 int n,m;
14
15 long long gcd(long long a,long long b)
16  {
17      return b==0?a:gcd(b,a%b);
18 }
19
20 int main()
21 {
22     //freopen("in.txt","r",stdin);
23     char c[5];
24     while(~scanf("%d%d",&n,&m)){
25         memset(tar,0,sizeof(tar));
26         memset(ans,0,sizeof(ans));
27         for(int i=1;i<=n;i++)
28             for(int j=1;j<=i;j++)
29         {
30             scanf("%s",c);
31             tar[i][j]=c[0];
32         }
33         ans[1][1]=1LL<<n;
34         for(int i=1;i<=n;i++)
35             for(int j=1;j<=i;j++)
36         {
37             if(tar[i][j]=='*'){
38                 ans[i+1][j]=ans[i+1][j]+(ans[i][j]>>1);
39                 ans[i+1][j+1]=ans[i+1][j+1]+(ans[i][j]>>1);
40             }
41             else{
42                 ans[i+2][j+1]=ans[i+2][j+1]+ans[i][j];
43             }
44         }
45     long long ans1=ans[n+1][m+1];
46     long long  sum=0;
47      for(int i=1;i<=n+1;i++)
48      {
49          sum+=ans[n+1][i];
50      }
51      long long  k;
52      k=gcd(sum,ans1);
53      printf("%lld/%lld\n",ans1/k,sum/k);
54     }
55     return 0;
56 }

转载于:https://www.cnblogs.com/codeyuan/p/4274727.html

POJ 1189 记忆化搜索相关推荐

  1. poj 1088(记忆化搜索)

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 88560   Accepted: 33212 Description ...

  2. POJ 1579 记忆化搜索

    [问题描述] 自定义函数w(a,b,c). 如果 a ≤ 0 或b ≤ 0 或 c ≤ 0, 则返回结果: 1;  如果 a > 20 或 b > 20 或 c > 20, 则返回结 ...

  3. poj 1085 Triangle War 博弈论+记忆化搜索

    思路:总共有18条边,9个三角形. 极大极小化搜索+剪枝比较慢,所以用记忆化搜索!! 用state存放当前的加边后的状态,并判断是否构成三角形,找出最优解. 代码如下: 1 #include<i ...

  4. pku 1191 棋盘分割 DP / 记忆化搜索

    http://poj.org/problem?id=1191 题意:中文省略. 思路:黑说p116有讲解, 主要的状态转移方程为 横着切: dp[k][x1][y1][x2][y2]  = min(d ...

  5. 博弈论(2)DP/记忆化搜索

    博弈问题的话,假设两个人都极度聪明,都会采取最优策略,那么就是也知道了对方也和自己一样聪明,我采取最优策略后,对方也会根据当前状态做出最优策略,简而言之,就是每个玩家都从第一步棋看到了最后一步棋. 先 ...

  6. 记忆化搜索例题 记忆化搜索

    1.poj  1579 题目链接: http://poj.org/problem?id=1579 代码如下: #include <cstdio> #include <cstring& ...

  7. 2020.9.9华为笔试记忆:KMP+记忆化搜索+字典树

    2020.9.9华为笔试 当然,出现在我博客中的笔试都不是我自己的笔试(人家也不给我发笔试链接,小声bibi,诶,好像我也没投,hhhahahha 记者:为什么要做笔试? 我:生活无聊了喏,肯定要做啊 ...

  8. 搜索问题之状态空间搜索(状态压缩+记忆化搜索+ BFS)

    文章目录 1. 前言 2. 问题举例(九宫格问题) 3. 问题分析 3.1 状态编码与解码 3.2 哈希映射 3.3 集合判重 4. 问题实现 推荐阅读 1. 前言 之前介绍的回溯法常用于 解空间的搜 ...

  9. 洛谷P1057 传球游戏(记忆化搜索)

    点我进入题目 题目大意:n个小孩围一圈传球,每个人可以给左边的人或右边的人传球,1号小孩开始,一共传m次,请问有多少种可能的路径使球回到1号小孩. 输入输出:输入n,m,输出路径的数量. 数据范围:4 ...

最新文章

  1. Java学习总结:40(国际化)
  2. sersync 同步
  3. “AI+教育”:人工智能下个掘金点?
  4. matlab训练集测试集划分
  5. mysql备份实例攻略
  6. [转:作者: 出处:javaresearch ]选择JSF不选Struts的十大理由
  7. 揭秘python的5种最佳调试方法_揭秘 IPython 的 5 种最佳调试方法-阿里云开发者社区...
  8. 专业本的C语言,以解决本专业问题为导向的C语言程序设计课程教学探索
  9. 又偷偷夹带反战私货!npm生态还能信任吗?
  10. windows下搭建SSH隧道内网映射
  11. Ubuntu通过apt-get安装指定版本和查询软件源有多少个版本
  12. SSIS中的字符映射表转换组件
  13. Redis开发与运维学习笔记
  14. Java常量池储存什么_JAVA常量池中存储的常量是什么
  15. XSS跨站脚本攻击详解(包括攻击方式和防御方式)
  16. wifi信道12为啥没人用_关于WIFI信道的问题?
  17. C/C++实现刮刮乐-刮奖区,刮出一套房
  18. Vue项目引入animated
  19. APP自动化原理+环境搭建
  20. Android SDK Windows 安装及环境配置教程

热门文章

  1. 2022-2028年中国阻燃母料行业市场深度分析及发展规模预测报告
  2. 2022-2028年中国中空玻璃聚硫密封胶行业市场研究及前瞻分析报告
  3. 关于某日访问次数最多的IP的topK问题的三种解法
  4. JAVA如何实现发送短信
  5. 关于python 中的__future__模块
  6. 理解 Word2Vec 之 Skip-Gram 模型
  7. Jittor框架API
  8. Android Handler sendEmptyMessageDelayed 和 sendEmptyMessage 的使用
  9. Binary XML file line #39: 最多只支持3个子View,Most only support three sub vi
  10. MVC案例-架构分析