poj1189 简单dp
http://poj.org/problem?id=1189
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
/**
poj1189 简单dp
题目大意:又是中文题~
解题思路; 总共会出现2^n种情况,我们一開始就如果有2^n个球在(1,1)点往下落。 对于每个没有挖掉的钉子(i,j):dp[i+1][j]+=dp[i][j]/2; dp[i+1][j+1]+=dp[i][j]/2;
对于挖掉的钉子(i,j):dp[i+2][j+1]+=dp[i][j];
*/
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <iostream>
using namespace std;
typedef long long LL; bool a[2555];
int n,m;
LL dp[55][55]; LL gcd(LL x,LL y)
{
if(y==0)return x;
return gcd(y,x%y);
} int main()
{
while(~scanf("%d%d",&n,&m))
{
int k=1;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=i; j++)
{
char str[12];
scanf("%s",str);
if(str[0]=='*')
{
a[k++]=true;
}
else
{
a[k++]=false;
}
//printf("%d\n",a[k-1]);
}
//puts("");
}
memset(dp,0,sizeof(dp));
dp[1][1]=1LL<<n;
for(int i=1; i<=n; i++)
{
int x=i*(i-1)/2;
for(int j=1; j<=i; j++)
{
if(a[j+x])
{
dp[i+1][j]+=dp[i][j]/2;
dp[i+1][j+1]+=dp[i][j]/2;
}
else
{
dp[i+2][j+1]+=dp[i][j];
}
}
}
LL x=1LL<<n;
LL y=dp[n+1][m+1];
LL g=gcd(x,y);
printf("%lld/%lld\n",y/g,x/g);
}
return 0;
}
poj1189 简单dp的更多相关文章
- HDU 1087 简单dp,求递增子序列使和最大
Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- Codeforces Round #260 (Div. 1) A. Boredom (简单dp)
题目链接:http://codeforces.com/problemset/problem/455/A 给你n个数,要是其中取一个大小为x的数,那x+1和x-1都不能取了,问你最后取完最大的和是多少. ...
- codeforces Gym 100500H A. Potion of Immortality 简单DP
Problem H. ICPC QuestTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100500/a ...
- 简单dp --- HDU1248寒冰王座
题目链接 这道题也是简单dp里面的一种经典类型,递推式就是dp[i] = min(dp[i-150], dp[i-200], dp[i-350]) 代码如下: #include<iostream ...
- poj2385 简单DP
J - 简单dp Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:65536KB 64bit ...
- hdu1087 简单DP
I - 简单dp 例题扩展 Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:32768KB ...
- poj 1157 LITTLE SHOP_简单dp
题意:给你n种花,m个盆,花盆是有顺序的,每种花只能插一个花盘i,下一种花的只能插i<j的花盘,现在给出价值,求最大价值 简单dp #include <iostream> #incl ...
- hdu 2471 简单DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2571 简单dp, dp[n][m] +=( dp[n-1][m],dp[n][m-1],d[i][k ...
- Codeforces 41D Pawn 简单dp
题目链接:点击打开链接 给定n*m 的矩阵 常数k 以下一个n*m的矩阵,每一个位置由 0-9的一个整数表示 问: 从最后一行開始向上走到第一行使得路径上的和 % (k+1) == 0 每一个格子仅仅 ...
随机推荐
- 部署ASP.NET MVC项目
目标:了解部署过程,掌握部署中出现问题该如何处理. 部署网站往往是一件麻烦事,因为在安装部署的过程中,经常有许多步骤要运行,对于许多不太熟悉IIS/SQL的新手来说,部署网站编程一件非常困难且危险的事 ...
- 动态加载EXE和DLL
程序中加载了一个DLL文件,但生成的EXE在脱离了DLL文件后仍然可以 单独使用,这是动态加载DLL技术.即:调用资源中的DLL. 此技术的好处:EXE可以使用DLL中的函数,但不会额外增加一 个DL ...
- ring0和ring3的区别
现在探讨内核程序和应用程序之间的本质区别.除了能用WDK编写内核程序和阅读一部分Windows的内核代码之外,我们还需要了解它们的本质是什么,它们和我们熟悉的应用程序有什么区别. Intel的x86处 ...
- YARN & HDFS2 安装和配置Kerberos
今天尝试在Hadoop 2.x开发集群上配置Kerberos,遇到一些问题,记录一下 设置hadoop security core-site.xml <property> <name ...
- 打开sa属性报错
--如果打开sa属性报错如下:无法显示请求的对话框.属性IsLocked不可用于“登录名sa".该对象可能没有此属性,也可能是访问权限不足而无法检索 --解决办法:首先用windows登录, ...
- 转:c语言EOF是什么?(及getchar()和putchar用法)
我学习C语言的时候,遇到的一个问题就是EOF. 它是end of file的缩写,表示"文字流"(stream)的结尾.这里的"文字流",可以是文件(file) ...
- 浅尝key-value数据库(三)——MongoDB的分布式
浅尝key-value数据库(三)——MongoDB的分布式 测试了单机MongoDB的随机读和写入性能,这一节来讲一讲MongoDB的分布式. MongoDB的分布式分成两种,一种是Replicat ...
- log翻硬币
若果有一组硬币,(假定有十个),每一个硬币仅仅有两个面,正面用以表示.反面用零表示. 给定目标(初始状态)1111100000 正正正正正反反反反反 (目标状态) 1000011101 正反反反反 ...
- STL之iterator(迭代器)
3.迭代器简单介绍 除了使用下标来訪问vector对象的元素外,标准库还提供了訪问元素的方法:使用迭代器.迭代器是一种检查容器内元素而且遍历元素的数据类型. 百科释义: 迭代器(iterator)是一 ...
- github上的QT源码,必要的时候还是应该看一下,仅凭猜测很容易出错
QCoreApplication::processEvents 他处理的时候拿的是current不是qAppqApp的话,才是和主线程密切相关的 一直觉得QT源码复杂,有点怕,所以没怎么看 我也看不懂 ...