话说大诗人李白,一生好饮。幸好他从不开车。一天,他提着酒壶,从家里出来,酒壶中有酒 2斗。他边走边唱:

无事街上走,提壶去打酒。

逢店加一倍,遇花喝一斗。

这一路上,他一共遇到店 N次,遇到花 M次。已知最后一次遇到的是花,他正好把酒喝光了。请你计算李白这一路遇到店和花的顺序,有多少种不同的可能?

注意:壶里没酒 (0斗) 时遇店是合法的,加倍后还是没酒;但是没酒时遇花是不合法的。

输入格式

第一行包含两个整数 N和 M。

输出格式

输出一个整数表示答案。由于答案可能很大,输出模 1000000007的结果。

数据范围

对于 40%的评测用例:1≤N,M≤10。
对于 100% 的评测用例:1≤N,M≤100。

输入样例:

5 10

输出样例:

14

样例解释

如果我们用 0代表遇到花,1 代表遇到店,14种顺序如下:

010101101000000
010110010010000
011000110010000
100010110010000
011001000110000
100011000110000
100100010110000
010110100000100
011001001000100
100011001000100
100100011000100
011010000010100
100100100010100
101000001010100

法一:

四维数组,i,j,k,c
时间复杂度:n*m*k*c=100*100*k*2;酒最多有102斗,约为2*1e6

ac代码

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;
int n,m;
int f[110][110][110][2];
const int M = 1000000007;int main()
{cin>>n>>m;f[0][0][2][1]=1;for(int i=0;i<=n;i++){for(int j=0;j<=m;j++){for(int k=0;k<=101;k++){for(int c=0;c<2;c++){if(i > 0 && c == 1 && k % 2 == 0){f[i][j][k][c] = (f[i - 1][j][k /2][0] + f[i - 1][j][k /2][1]) % M;}if(j > 0  && c == 0 && k >= 0){f[i][j][k][c] = (f[i][j - 1][k+1][0] + f[i][j - 1][k +1][1]) % M;}}}}}cout<<f[n][m][0][0];return 0;
}

法二

三维
同上,减少了关于c的循环注意:
此时答案为f[n][m-1][1],即还剩一次花未经过,还剩一斗酒
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;int n,m;
int f[110][110][110];
const int N = 1000000007 ;
int main()
{cin>>n>>m;f[0][0][2]=1;for(int i=0;i<=n;i++){for(int j=0;j<=m;j++){for(int k=0;k<=102;k++){if(i>0&&k%2==0)f[i][j][k]=(f[i][j][k]+f[i-1][j][k/2])%N;if(j>0)f[i][j][k]=(f[i][j][k]+f[i][j-1][k+1])%N;}}}cout<<f[n][m-1][1];return 0;
}

李白打酒加强版(dp)相关推荐

  1. LQ0069 李白打酒加强版【DP】

    题目来源:蓝桥杯2022初赛 C++ B组I题 题目描述 话说大诗人李白,一生好饮.幸好他从不开车. 一天,他提着酒壶,从家里出来,酒壶中有酒 2 斗.他边走边唱: 无事街上走,提壶去打酒. 逢店加一 ...

  2. 蓝桥杯1——李白打酒加强版

    解题思路 本题目第一想法是使用递归,但是使用递归后超时,只能另寻他法. 通过使用三维数组,前两位分别代表遇到的店和花的数量,第三位代表当前酒的余量,根据三维数组分析情况,对情况进行累加,即采用线性规划 ...

  3. 第十三届蓝桥杯省赛I:李白打酒加强版

    先看一下题目吧 样例说明 分析: 看题目还是很容易想到要用动态规划的,题目要求的是求遇到遇到花的次数i=N.遇到店的次数j=M.且剩余酒的量k=0斗的情况有多少种. 由此我们的思路就很容易确定了,即设 ...

  4. 李白打酒c语言编程,搞定了“李白打酒”,还原问题都迎刃而解

    文|刷刷 图|自制&火花课件 李白街上走,提壶去打酒:遇店加一倍,见花喝一斗,三遇店和花,喝光壶中酒.试问酒壶中,原有多少酒? "李白打酒"是我国民间自古以来广为流传的一道 ...

  5. 2014\Province_C_C++_B\3 李白打酒

    题目:李白打酒 话说大诗人李白,一生好饮.幸好他从不开车. 一天,他提着酒壶,从家里出来,酒壶中有酒2斗.他边走边唱: 无事街上走,提壶去打酒. 逢店加一倍,遇花喝一斗. 这一路上,他一共遇到店5次, ...

  6. 蓝桥杯 2014本科C++ B组 李白打酒 三种实现方法 枚举/递归

    标题:李白打酒 话说大诗人李白,一生好饮.幸好他从不开车. 一天,他提着酒壶,从家里出来,酒壶中有酒2斗.他边走边唱: 无事街上走,提壶去打酒. 逢店加一倍,遇花喝一斗. 这一路上,他一共遇到店5次, ...

  7. 2014蓝桥杯:李白打酒;奇怪的分式(枚举,最大公约数)

    三.题目:李白打酒 话说大诗人李白,一生好饮.幸好他从不开车. 一天,他提着酒壶,从家里出来,酒壶中有酒2斗.他边走边唱: 无事街上走,提壶去打酒. 逢店加一倍,遇花喝一斗. 这一路上,他一共遇到店5 ...

  8. 梅森素数、猜年龄、啤酒饮料、武功秘籍、调和级数、李白打酒、猜字母、扩散、三升序列、寻找2020

    梅森素数 题目 如果一个数字的所有真因子之和等于自身,则称它为"完全数"或"完美数" 例如:6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + ...

  9. 李白打酒 话说大诗人李白,一生好饮。幸好他从不开车。

    package org.bluebridge.topics;/*李白打酒话说大诗人李白,一生好饮.幸好他从不开车.一天,他提着酒壶,从家里出来,酒壶中有酒2斗.他边走边唱:无事街上走,提壶去打酒.逢店 ...

  10. 蓝桥杯——真题训练之李白打酒

    标题:李白打酒     话说大诗人李白,一生好饮.幸好他从不开车. 一天,他提着酒壶,从家里出来,酒壶中有酒2斗.他边走边唱: 无事街上走,提壶去打酒. 逢店加一倍,遇花喝一斗. 这一路上,他一共遇到 ...

最新文章

  1. 强大的shell常用命令集锦
  2. 安卓连接linux软件,利用 Telnet 无线控制安卓手机 无需 Root
  3. CSS3特效之转化(transform)和过渡(transition)
  4. 英语影视台词---八、the shawshank redemption
  5. java中字符串后加Box_字符串未显示在JavaFX中ComboBox的Tableview上
  6. 50元打造双网卡负载均衡服务器
  7. 深度学习笔记(40) YOLO
  8. 超400万用户的Chrome截图插件下架始末
  9. python实践winrm,实现远程连接Windows服务器,并执行指定命令
  10. 【项目经验】EasyUI Tree
  11. 微信公众号管理后台获取已关注的openid
  12. 16进制颜色码对照表
  13. H3C UniServer R6900 G3 服务器介绍
  14. android极光推送tag,Android极光推送设置别名和标签
  15. mysql 5.1 变量专题
  16. linux下C语言抓包程序,带图形界面
  17. oracle编程语言是什么意思,OraclePL编程语言的优点介绍
  18. Java项目:旅游管理系统(java+JSP+HTML5+Bootstrap+servlet+Mysql)
  19. linux 只读文件 删除,linux – 我无法删除文件’rm:无法删除X只读文件系统’
  20. 错过就要多花300元,MDCC 2016移动开发者大会5折抢票倒计时!

热门文章

  1. [有限元方法基础理论] 质量集中有限元(谱元)
  2. java计算机毕业设计共享充电宝管理系统演示录像2021源码+mysql数据库+系统+lw文档+部署
  3. linux 快照工具,技术预览:CentOS 7中利用Snapper GUI管理系统快照
  4. yilia 的html模板,Hexo搭建个人博客:yilia主题配置(七) - 自定义Subnav图标
  5. ORACLE 10064诊断工具,TRCA安装与测试
  6. 360浏览器自动填充表单
  7. #C语言#6.1 数据类型 笔记
  8. 2020 前端必看 20个最好的前端Web开发工具
  9. 【微前端】微前端——功能团队中缺失的一块拼图
  10. 最近超火的100句土味情话合集,拿去撩妹撩汉吧!