当前位置: 首页 > news >正文

蓝桥杯2114 李白打酒加强版

问题描述

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

一天, 他提着酒显, 从家里出来, 酒显中有酒 2 斗。他边走边唱:

无事街上走,提显去打酒。 逢店加一倍, 遇花喝一斗。

这一路上, 他一共遇到店 N 次, 遇到花 M 次。已知最后一次遇到的是花, 他正好把酒喝光了。

请你计算李白这一路遇到店和花的顺序, 有多少种不同的可能?

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

输入格式

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

输出格式

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

样例输入

5 10

样例输出

14

样例说明

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

010101101000000

010110010010000

011000110010000

100010110010000

011001000110000

100011000110000

100100010110000

010110100000100

011001001000100

100011001000100

100100011000100

011010000010100

100100100010100

101000001010100

评测用例规模与约定

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

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

 

难。。

#include<iostream>
using namespace std;#define int long long
const int mod = 1000000007;
const int N = 110;int n, m;//dp[i][j][k]:遇到i次店,遇到j次花,剩余酒量为k时的顺序数量
int dp[N][N][N];   signed main()
{cin>>n>>m;dp[0][0][2] = 1; //遇到店的数量for(int i=0; i<=n; ++i)  {//遇到的花的次数for(int j=0; j<=m-1; ++j)//因为最后一次是花,所以之前最多遇到  m-1 次花{//遍历当前剩余的酒量//因为每次遇花喝一斗,最多喝 m 斗,所以酒量不会超过 mfor(int k=0; k<=m; ++k){//遇到花 if(j>=1 && k>=1)  //j>=1:j-1>=0, k>=1:当前酒量至少为1斗{//逆向逻辑:花的总次数从j-1增加到j,酒量从k+1减少到kdp[i][j][k] = dp[i][j-1][k+1];  //单纯的赋值,数值不会增长,因此不需要取模}//遇到店 if(i>=1 && k%2==0){//逆向逻辑:店的总次数从i-1增加到i,酒量从k/2加倍到kdp[i][j][k] = (dp[i][j][k] + dp[i-1][j][k/2]) % mod;  //加法操作,数值会增长,必须取模}}}}//遇到 n 次店,m - 1 次花,酒量为1斗的方案数cout<<dp[n][m-1][1];return 0;
}
http://www.xdnf.cn/news/552223.html

相关文章:

  • JAVASE查漏补缺
  • CAP分布式理论
  • SpringBoot(三)--- 数据库基础
  • MySQL事务管理:事务控制与锁机制详解
  • 【Java实战】线程池 并发 并行 生命周期(详细解释)
  • idea本地debug断点小技巧
  • cplex12.9 安装教程以及下载
  • LabVIEW下AI开发
  • 在 Excel 中使用 C# .NET 用户定义函数 操作步骤
  • oracle以注释作为表头进行查询并导出
  • LeetCode 3024.三角形类型
  • EtherCAT转CANopen协议转换网关在电力行业的融合应用
  • 《微机原理与接口技术》第 7 章 输入/输出技术
  • 基于Yolov8+PyQT5的绝缘子识别系统
  • 《Effective Python》第三章 循环和迭代器——永远不要在迭代容器的同时修改它们
  • 推一帧,通一气:跨平台RTMP推流的内家功夫
  • 国产远程工具如何重新定义高效连接?——从协议支持到生态整合的全面解析
  • vue路由小案例
  • 2020年中国地级与省级高标准农田分布数据
  • C++初阶-迭代器失效和vector::insert函数的最终实现
  • upload-labs靶场通关详解:第12-13关
  • Nextjs App Router 开发指南
  • Vue百日学习计划Day46-48天详细计划-Gemini版
  • PL/SQL 安装配置与使用
  • 《Python数学与科学计算完全指南:从基础运算到高级加密,解锁数据处理的核心技能!》
  • 手握消防设施操作员证,职业之路更宽广
  • C++ Pimpl(Pointer to Implementation)设计思想
  • AI 商业化部署中,ollama 和 vllm 的选型对比
  • 二叉树遍历--(前 中 后 层序)
  • 【lvgl9】使用keyboard和textarea实现密码数字输入界面