http://www.lydsy.com/JudgeOnline/problem.php?id=1867

dp[i][j] 落到(i,j)的方案数

dp[i][j]=0.5*dp[i-1][j]   [(i-1,j)位置有钉子] + 0.5*dp[i-1][j-1]    [(i-1.j-1)位置有钉子] + dp[i-1][j-2]    [(i-1,j-2)位置没有钉子]

#include<cstdio>
#include<iostream> using namespace std; typedef long long LL; #define N 52 bool nail[N][N]; LL getgcd(LL a,LL b) { return !b ? a : getgcd(b,a%b); } struct Fraction
{
LL molecule,denominator; void operator = (int p)
{
molecule=p;
denominator=;
} Fraction operator * (Fraction p)
{
Fraction c;
c.molecule=molecule;
c.denominator=denominator<<;
LL gcd=getgcd(c.molecule,c.denominator);
c.molecule/=gcd;
c.denominator/=gcd;
return c;
} void operator += (Fraction p)
{
if(!denominator)
{
*this=p;
return;
}
Fraction c;
LL gcd=getgcd(denominator,p.denominator);
c.denominator=denominator/gcd*p.denominator;
c.molecule=c.denominator/denominator*molecule+c.denominator/p.denominator*p.molecule;
*this=c;
} bool have()
{
return denominator;
} void print()
{
if(!molecule) denominator=;
cout<<molecule<<'/'<<denominator;
} }half; Fraction dp[N][N]; char getc()
{
char c;
while()
{
c=getchar();
if(c=='*'||c=='.') return c;
}
} int main()
{
int n,m;
scanf("%d%d",&n,&m);
char c;
for(int i=;i<=n;++i)
for(int j=;j<=i;++j)
{
c=getc();
if(c=='*') nail[i][j]=true;
}
dp[][]=;
for(int i=;i<=n+;++i)
for(int j=;j<=i;++j)
{ if(nail[i-][j-] && dp[i-][j-].have()) dp[i][j]+=dp[i-][j-]*half;
if(nail[i-][j] && dp[i-][j].have()) dp[i][j]+=dp[i-][j]*half;
if(!nail[i-][j-] && dp[i-][j-].have()) dp[i][j]+=dp[i-][j-];
}
dp[n+][m+].print();
}

1867: [Noi1999]钉子和小球

Time Limit: 1 Sec  Memory Limit: 64 MB
Submit: 880  Solved: 355
[Submit][Status][Discuss]

Description

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

bzoj千题计划189:bzoj1867: [Noi1999]钉子和小球的更多相关文章

  1. bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块

    http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...

  2. bzoj千题计划196:bzoj4826: [Hnoi2017]影魔

    http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...

  3. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  4. bzoj千题计划177:bzoj1858: [Scoi2010]序列操作

    http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...

  5. bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)

    https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...

  6. bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)

    https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...

  7. bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹

    http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...

  8. bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机

    http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...

  9. bzoj千题计划250:bzoj3670: [Noi2014]动物园

    http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么 ...

随机推荐

  1. 记一次Java加密加签算法到php的坑

    此文为本人原创首发于 http://www.35coder.com/convert_encryption_codes_to_php/. 写代码的经历中,总少不了与外部的程序对接,一旦有这样的事,往往周 ...

  2. 面向对象第一次练手-------ArrayList集合、类、对象、冒泡排序、类型转换

    思维转不过弯儿来  怎么做都是错      哪怕差一个()就成功的事情,也是千差万别 忽然想到一句话:差一步就成功的距离  =  差几万米就成功的距离 部分的理解和都体现在代码和注释里 using S ...

  3. 完爆Facebook/GraphQL,APIJSON全方位对比解析(三)-表关联查询

    相关阅读: 完爆Facebook/GraphQL,APIJSON全方位对比解析(一)-基础功能 完爆Facebook/GraphQL,APIJSON全方位对比解析(二)-权限控制 自APIJSON发布 ...

  4. ESLint 规则详解(二)

    接上篇 ESLint 规则详解(一) 前端界大神 Nicholas C. Zakas 在 2013 年开发的 ESLint,极大地方便了大家对 Javascript 代码进行代码规范检查.这个工具包含 ...

  5. VirtualBox虚拟机怎么导入已经存在的vdi文件

    VirtualBox虚拟机怎么导入已经存在的vdi文件 第一章 1.原因 早上一不小心将virtualBox 卸载了,(不知道怎么了, 里面得虚拟机全部都没有了,但是vdi文件还在) 2.解决办法 直 ...

  6. Git的简单操作

    一.Git安装 windows下,可在在git官网下载(https://git-scm.com/downloads) 也有360提供的git(http://baoku.360.cn/soft/show ...

  7. CMS漏洞检测工具 – CMSmap

    CMSmap是一个Python编写的针对开源CMS(内容管理系统)的安全扫描器,它可以自动检测当前国外最流行的CMS的安全漏洞. CMSmap主要是在一个单一的工具集合了不同类型的CMS的常见的漏洞. ...

  8. PAT甲题题解-1014. Waiting in Line (30)-模拟,优先级队列

    题意:n个窗口,每个窗口可以排m人.有k为顾客需要办理业务,给出了每个客户的办理业务时间.银行在8点开始服务,如果窗口都排满了,客户就得在黄线外等候.如果有一个窗口用户服务结束,黄线外的客户就进来一个 ...

  9. M2 Daily SCRUM要求

    每个人的工作 (有work item 的ID):昨天已完成的工作,今天计划完成的工作:工作中遇到的困难. 燃尽图 照片 每人的代码/文档签入记录(不能每天都在 “研讨”, 但是没有代码签入) 如实报告 ...

  10. 软件工程之四则运算--Github

    由于现在配置问题,然后借用同学电脑将代码上传至Github,网址为:https://github.com/be821/RealFour 参考相关Github文档: 1. http://my.oschi ...