http://poj.org/problem?id=1189

DP,“数塔”

 1 #include <stdio.h>
 2 #include <string.h>
 3
 4 int a[56][56];
 5 long long dp[56][56];
 6
 7 long long gcd(long long x, long long y)
 8 {
 9     return y? gcd(y, x%y): x;
10 }
11
12
13 int main()
14 {
15     int i, j, k, n, m;
16     long long r;
17     char s[1234] = "\0";
18     memset(dp, 0, sizeof(dp));
19     scanf("%d%d%*c", &n, &m);
20     for(i=1; i<=n; i++)
21     {
22         gets(s);
23         k = 1;
24         for(j=0; s[j]; j++)
25         {
26             if(s[j]=='*')
27             {
28                 a[i][k] = 1;
29                 k ++;
30                 continue;
31             }
32             if(s[j]=='.')
33             {
34                 a[i][k] = 0;
35                 k ++;
36                 continue;
37             }
38         }
39     }
40     dp[1][1] = (long long)1<<56;
41     //printf("%lld\n", dp[1][1]);
42     for(i=1; i<=n; i++)
43     {
44         for(j=1; j<=i; j++)
45         {
46             if(a[i][j])
47             {
48                 dp[i+1][j] += (dp[i][j]>>1);
49                 dp[i+1][j+1] += (dp[i][j]>>1);
50             }
51             else
52             {
53                 dp[i+2][j+1] += dp[i][j];
54             }
55             //printf("%lld ", dp[i][j]);
56         }
57         //printf("\n");
58     }
59     r = dp[i][m+1];
60     if(r == 0)
61     {
62         printf("0/1\n");
63         return 0;
64     }
65     if(gcd(dp[1][1], r)==1)
66     {
67         printf("%lld\n", r);
68         return 0;
69     }
70     printf("%lld/%lld\n", (long long)r/gcd(dp[1][1], r), (long long)dp[1][1]/gcd(dp[1][1], r));
71     return 0;
72 }

转载于:https://www.cnblogs.com/yuan1991/archive/2013/01/20/pku1189.html

pku1189 钉子和小球相关推荐

  1. noi99钉子和小球 解题报告

    题目叙述 钉子和小球 Time Limit: 1000MS Memory Limit: 10000K 题目描述 有一个三角形木板,竖直立放,上面钉着n(n + 1) / 2颗钉子,还有(n + 1)个 ...

  2. [Noi1999]钉子和小球

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

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

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

  4. POJ 1189 钉子和小球

    题目链接:http://poj.org/problem?id=1189 dp 可以知道一共有2^n条路径,则设顶点有2^n个球,若当前为'*'则向左右的球各有一半:若为'.',则球全部掉入正下方. 1 ...

  5. POJ 1189 记忆化搜索

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

  6. 【转】别人整理的DP大全

    为什么80%的码农都做不了架构师?>>>    动态规划 动态规划 容易: 1018 , 1050 , 1083 , 1088 , 1125 , 1143 , 1157 , 1163 ...

  7. 2019.5.summary

    2019.5.1 CF C. Prefix Sum Primes 感觉CF就是训练妳如何养成对题目强大的YY能力的QAQ 我们构造 如果只有一种,没辙,只能这样放 否则先放一个2,再放一个1 接下来把 ...

  8. linux使用指定网卡ping,LINUX ping 指定网卡

    iOS homekit使用说明 本文由CocoaChina翻译组成员iBenjamin_Go和浅夏@旧时光翻译自苹果开发文档:HomeKit Developer Guide,敬请勘误. 本文档内容包括 ...

  9. 清北学堂2019.8.9

    Day 4 上午 赵和旭 概率 某个事件A发生的可能性的大小,称之为事件A的概率,记作P(A). 假设某事的所有可能结果有n种,每种结果都是等概率,事件A涵盖其中的m种,那么P(A)=m/n. 例如投 ...

最新文章

  1. networkx 有向图强连通_leetcode刷题(四):搜索(深度优先搜索,广度优先搜索)拓扑排序,强连通分量...
  2. parser.add_argument 参数用法 包含metavar
  3. 中国学者用人工光感受器助失明小鼠复明
  4. Python中列表的copy方法
  5. iOS自动偏移64个像素
  6. 人生,不过是停下在走
  7. SAP Data Intelligence Graph json源代码的结构分析
  8. 行为类模式(二):命令(Command)
  9. android图片浏览功能,怎么在Android应用中实现一个网页图片浏览功能
  10. vue.js更改颜色_如何使用Vue.js实现简单的标题更改应用程序
  11. Fedora 8安装非官方compiz-fusion
  12. java开启一个线程_【jdk源码分析】java多线程开启的三种方式
  13. Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc
  14. UDP 协议报文格式
  15. 修改 idea 主题
  16. 【大数据分析】Spark介绍
  17. python如何下载包_怎么在python中下载包
  18. 分享塑胶模具设计思路与流程,建议收藏!
  19. 完全用 GNU/Linux 工作(转)
  20. foxmail中导入网易邮箱联系人方法

热门文章

  1. django的模板系统过滤器笔记
  2. day08面向对象+
  3. mybatis报错(三)报错Result Maps collection does not contain value for java.lang.Integer解决方法...
  4. 录音整理文字工具otranscribe简介
  5. listview当选中某一个item时设置背景色其他的不变
  6. 2014 Red Hat Summit(红帽峰会)PPT合集
  7. ospf多区域路由实验
  8. Revit API多选多重过滤
  9. java获取标准输出到文件_IO java标准输入与输出
  10. 长时间使用s档有危害吗_空调长时间不清洗竟有这么多危害 你知道吗?