设f[i][j]为掉到f[i][j]时的概率然后分情况随便转移一下就好

主要是要手写分数比较麻烦

#include<iostream>
#include<cstdio>
using namespace std;
const int N=55;
int n,m;
char a[N][N];
long long gcd(long long a,long long b)
{
return !b?a:gcd(b,a%b);
}
struct fs
{
long long x,y;
fs(long long X=0,long long Y=1)
{
x=X,y=Y;
}
fs operator + (const fs &a) const
{
long long d=gcd(a.y,y),l=a.y/d*y;
fs b=fs(l/y*x+l/a.y*a.x,l);
long long g=gcd(b.x,b.y);
return fs(b.x/g,b.y/g);
}
fs operator * (const fs &a) const
{
fs b=fs(x*a.x,y*a.y);
long long g=gcd(b.x,b.y);
return fs(b.x/g,b.y/g);
}
}f[N][N];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
{
a[i][j]=getchar();
while(a[i][j]!='*'&&a[i][j]!='.')
a[i][j]=getchar();
}
f[1][1]=fs(1,1);
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
{
if(a[i][j]=='*')
{
f[i+1][j]=f[i+1][j]+f[i][j]*fs(1,2);
f[i+1][j+1]=f[i+1][j+1]+f[i][j]*fs(1,2);
}
else
f[i+2][j+1]=f[i+2][j+1]+f[i][j];
}
printf("%lld/%lld\n",f[n+1][m+1].x,f[n+1][m+1].y);
return 0;
}
/*
5 2
*
*.
***
*.**
*****
*/

bzoj 1867: [Noi1999]钉子和小球【dp】的更多相关文章

  1. BZOJ 1867 [Noi1999]钉子和小球 DP

    想状态和钉子的位置如何匹配想了半天...后来发现不是一样的吗$qwq$ 思路:当然是$DP$啦 提交:>5次(以为无故$RE$,实则是先乘后除爆了$long\space long$) 题解: 若 ...

  2. bzoj千题计划189:bzoj1867: [Noi1999]钉子和小球

    http://www.lydsy.com/JudgeOnline/problem.php?id=1867 dp[i][j] 落到(i,j)的方案数 dp[i][j]=0.5*dp[i-1][j]   ...

  3. 2018.09.24 bzoj1867: [Noi1999]钉子和小球(概率dp)

    传送门 概率dp经典题. 如果当前位置(i,j)(i,j)(i,j)有钉子,那么掉到(i+1,j),(i+1,j+1)(i+1,j),(i+1,j+1)(i+1,j),(i+1,j+1)的概率都是1/ ...

  4. bzoj1867: [Noi1999]钉子和小球(DP)

    一眼题...输出分数格式才是这题的难点QAQ 学习了分数结构体... #include<iostream> #include<cstring> #include<cstd ...

  5. POJ1189钉子和小球(DP)

    对钉子DP,如果钉子存在DP[i+1][j]+=DP[i][j]; DP[i+1][j+1]+=DP[i][j]; 如果不存在DP[i+2][j+1]+=4*DP[i][j]; 见代码:(有一个比较坑 ...

  6. [bzoj1867][Noi1999][钉子和小球] (动态规划)

    Description Input 第1行为整数n(2<=n<=50)和m(0<=m<=n).以下n行依次为木板上从上至下n行钉子的信息,每行中‘*’表示钉子还在,‘.’表示钉 ...

  7. bzoj 2037: [Sdoi2008]Sue的小球——dp

    Description Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当一个海盗,而是要收集空中漂浮的彩 ...

  8. POJ-1189 钉子和小球(动态规划)

    钉子和小球 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7452 Accepted: 2262 Description 有一个 ...

  9. [BZOJ 4033] [HAOI2015] T1 【树形DP】

    题目链接:BZOJ - 4033 题目分析 使用树形DP,用 f[i][j] 表示在以 i 为根的子树,有 j 个黑点的最大权值. 这个权值指的是,这个子树内部的点对间距离的贡献,以及 i 和 Fat ...

随机推荐

  1. C语言学习<输入输出函数,函数的调用>

    #include <stdio.h> /* 输入输出函数的学习 函数的调用 2017.05.25 soulsjie */ //输入连个数字求最大值 void main(){ int Max ...

  2. 九度oj 题目1056:最大公约数

    题目1056:最大公约数 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8068 解决:5317 题目描述: 输入两个正整数,求其最大公约数. 输入: 测试数据有多组,每组输入两个正整数. ...

  3. linux & command line & console & logs

    linux & command line & console & logs how to get the logs form linux command console htt ...

  4. hdu 4430 二分+枚举

    /* 二分+枚举 枚举k会超时,枚举r还要优化,有可能会超64 */ #include<stdio.h> #include<math.h> #define ll __int64 ...

  5. 用jQuery向div中添加Html文本内容

    前台代码: <link href="http://www.cnblogs.com/Content/themes/base/jquery-ui.css" rel="s ...

  6. MongoDB小结19 - find【查询条件$all】

    利用all来查询所以满足的匹配项,已知数据库有这些数据 db.user.find({},{"_id":0}) { "fruit" : [ "apple ...

  7. spring mvc随便接收list<objeect>参数

    在后台设定一个类,PersonList类: public class PersonList {private List<User> user; public List<User> ...

  8. 我的arcgis培训照片10

    来自:http://www.cnblogs.com/gisoracle/p/4297439.html

  9. NSA开发的工控ICS/SCADA态势感知开源工具Grassmarlin(附下载地址)

    工具简介 GRASSMARLIN是一款由美国国家安全局开发的,能够帮助运维工程师在IP网络上发现并编目监控和数据采集系统(SCADA)和工业控制系统(ICS)主机的开源软件工具,也被称为被动网络映射器 ...

  10. ArcGIS Python 编码问题

    吐槽一下ArcGIS自带的 Python IDE, 没有代码补全 没有函数提示 没有代码折叠 没有行号 撤销操作还有问题 字符编码还有各种问题 .........   花了2天时间才琢磨出来的经验 环 ...