POJ 1189 记忆化搜索
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 7218 | Accepted: 2164 |
Description
让一个直径略小于d的小球中心正对着最上面的钉子在板上自由滚落,小球每碰到一个钉子都可能落向左边或右边(概率各1/2),且球的中心还会正对着下一颗将要碰上的钉子。例如图2就是小球一条可能的路径。
我们知道小球落在第i个格子中的概率pi=pi=,其中i为格子的编号,从左至右依次为0,1,...,n。
现在的问题是计算拔掉某些钉子后,小球落在编号为m的格子中的概率pm。假定最下面一排钉子不会被拔掉。例如图3是某些钉子被拔掉后小球一条可能的路径。
Input
Output
Sample Input
5 2 ** .* * ** . * * * * * * *
Sample Output
7/16
Source
状态转移方程:
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 记忆化搜索相关推荐
- poj 1088(记忆化搜索)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 88560 Accepted: 33212 Description ...
- POJ 1579 记忆化搜索
[问题描述] 自定义函数w(a,b,c). 如果 a ≤ 0 或b ≤ 0 或 c ≤ 0, 则返回结果: 1; 如果 a > 20 或 b > 20 或 c > 20, 则返回结 ...
- poj 1085 Triangle War 博弈论+记忆化搜索
思路:总共有18条边,9个三角形. 极大极小化搜索+剪枝比较慢,所以用记忆化搜索!! 用state存放当前的加边后的状态,并判断是否构成三角形,找出最优解. 代码如下: 1 #include<i ...
- pku 1191 棋盘分割 DP / 记忆化搜索
http://poj.org/problem?id=1191 题意:中文省略. 思路:黑说p116有讲解, 主要的状态转移方程为 横着切: dp[k][x1][y1][x2][y2] = min(d ...
- 博弈论(2)DP/记忆化搜索
博弈问题的话,假设两个人都极度聪明,都会采取最优策略,那么就是也知道了对方也和自己一样聪明,我采取最优策略后,对方也会根据当前状态做出最优策略,简而言之,就是每个玩家都从第一步棋看到了最后一步棋. 先 ...
- 记忆化搜索例题 记忆化搜索
1.poj 1579 题目链接: http://poj.org/problem?id=1579 代码如下: #include <cstdio> #include <cstring& ...
- 2020.9.9华为笔试记忆:KMP+记忆化搜索+字典树
2020.9.9华为笔试 当然,出现在我博客中的笔试都不是我自己的笔试(人家也不给我发笔试链接,小声bibi,诶,好像我也没投,hhhahahha 记者:为什么要做笔试? 我:生活无聊了喏,肯定要做啊 ...
- 搜索问题之状态空间搜索(状态压缩+记忆化搜索+ BFS)
文章目录 1. 前言 2. 问题举例(九宫格问题) 3. 问题分析 3.1 状态编码与解码 3.2 哈希映射 3.3 集合判重 4. 问题实现 推荐阅读 1. 前言 之前介绍的回溯法常用于 解空间的搜 ...
- 洛谷P1057 传球游戏(记忆化搜索)
点我进入题目 题目大意:n个小孩围一圈传球,每个人可以给左边的人或右边的人传球,1号小孩开始,一共传m次,请问有多少种可能的路径使球回到1号小孩. 输入输出:输入n,m,输出路径的数量. 数据范围:4 ...
最新文章
- Java学习总结:40(国际化)
- sersync 同步
- “AI+教育”:人工智能下个掘金点?
- matlab训练集测试集划分
- mysql备份实例攻略
- [转:作者: 出处:javaresearch ]选择JSF不选Struts的十大理由
- 揭秘python的5种最佳调试方法_揭秘 IPython 的 5 种最佳调试方法-阿里云开发者社区...
- 专业本的C语言,以解决本专业问题为导向的C语言程序设计课程教学探索
- 又偷偷夹带反战私货!npm生态还能信任吗?
- windows下搭建SSH隧道内网映射
- Ubuntu通过apt-get安装指定版本和查询软件源有多少个版本
- SSIS中的字符映射表转换组件
- Redis开发与运维学习笔记
- Java常量池储存什么_JAVA常量池中存储的常量是什么
- XSS跨站脚本攻击详解(包括攻击方式和防御方式)
- wifi信道12为啥没人用_关于WIFI信道的问题?
- C/C++实现刮刮乐-刮奖区,刮出一套房
- Vue项目引入animated
- APP自动化原理+环境搭建
- Android SDK Windows 安装及环境配置教程
热门文章
- 2022-2028年中国阻燃母料行业市场深度分析及发展规模预测报告
- 2022-2028年中国中空玻璃聚硫密封胶行业市场研究及前瞻分析报告
- 关于某日访问次数最多的IP的topK问题的三种解法
- JAVA如何实现发送短信
- 关于python 中的__future__模块
- 理解 Word2Vec 之 Skip-Gram 模型
- Jittor框架API
- Android Handler sendEmptyMessageDelayed 和 sendEmptyMessage 的使用
- Binary XML file line #39: 最多只支持3个子View,Most only support three sub vi
- MVC案例-架构分析