蓝桥杯第十三届--李白打酒加强版

题目描述

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

一天,他提着酒壶,从家里出来,酒壶中有酒 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。

DFS (通过64%,ACwing 3/11);

#include<iostream>
using namespace std;
#define int long long
int mod=1000000007;
int n,m;
int ans=0;
void dfs(int cnt,int x,int y){if(cnt<0) return ;if(y==m+1){if(x==n+1&&cnt==0){ans++;ans%=mod;//	cout<<cnt<<' '<<m-y<<"---"<<endl;}return ;}if(cnt>m-y+1||n-x>=m-y) return ;if(y>m+1||x>n+1) return ;dfs(cnt*2,x+1,y);dfs(cnt-1,x,y+1);
}
signed main(){scanf("%d%d",&n,&m);dfs(2,1,1);cout<<ans%mod<<endl;return 0;
}

DFS(AC) 

#include<iostream>
#include<cstring>
using namespace std;
#define int long long
const int N=110;
int mod=1000000007;
int n,m;
int ans=0;
int arr[N][N][N];
int dfs(int n,int m,int cnt){if(m<0||n<0) return 0;if(arr[n][m][cnt]!=-1) return arr[n][m][cnt];if(cnt<0) return 0;if(m==0){if(n==0&&cnt==0) return 1;return 0;}if(cnt>m||n>=m) return 0;ans=dfs(n-1,m,cnt*2)+dfs(n,m-1,cnt-1);ans%=mod;arr[n][m][cnt]=ans;return ans;
}
signed main(){memset(arr,-1,sizeof arr);scanf("%d%d",&n,&m);cout<<dfs(n,m,2)<<endl;return 0;
}

DP(AC)

f[i][j][k]:走到了第i个位置,遇到了j个花,还剩k斗酒的合法方案数.

#include<iostream>
using namespace std;
#define int long long
const int N=110;
int f[N*2][N][N*2];
int mod=1000000007;
signed main(){int n,m;cin>>n>>m;f[0][0][2]=1;for(int i=1;i<n+m;i++){for(int j=0;j<m;j++){for(int k=0;k<=m;k++){//k为偶数,第i个可以是店,也可以是花,k为奇数,只能是花if(k%2==0){//店转移f[i][j][k]=(f[i][j][k]+f[i-1][j][k>>1])%mod;}//花转移if(j>=1) f[i][j][k]=(f[i][j][k]+f[i-1][j-1][k+1])%mod;}}}cout<<f[n+m-1][m-1][1]<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/789500.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超市销售数据-python数据分析项目

Python数据分析项目-基于Python的销售数据分析项目 文章目录 Python数据分析项目-基于Python的销售数据分析项目项目介绍数据分析结果导出数据查阅 数据分析内容哪些类别比较畅销?哪些商品比较畅销?不同门店的销售额占比哪个时间段是超市的客流高封期?查看源数据类型计算本月…

QT 实现无边框可伸缩变换有阴影的QDialog弹窗

实现无标题栏窗口的拖拽移动、调节窗口大小以及边框阴影效果。初始化时进行位或操作&#xff0c;将这些标志合并为一个值&#xff0c;并将其设置为窗口的标志。这些标志分别表示这是一个对话框、无边框窗口、有标题栏、有最小化按钮和最大化按钮。 setWindowFlags(Qt::Dialog |…

Java(内部类)

1.内部类 内的五大成员&#xff1a;属性、方法、构造方法、代码块、内部类 解释&#xff1a;在一个类的里面&#xff0c;再定义一个类。举例:在A类的内部定义B类&#xff0c;B类就被称为内部类注意&#xff1a;内部类表示的事物是外部类的一部分&#xff0c;内部类单独出现没…

Digi XBee RF 模块型号说明

目录 Digi XBee 射频模块 2.4 GHz 射频模块&#xff1a; 1.Digi XBee3系列&#xff1a; XB3-24Z8RM-J 2. Digi XBee S2C系列&#xff1a; XBP24CZ7UIS-005 低于 1 GHz 射频模块 1. Digi XBee 900 和 868 MHz 模块&#xff1a; XBP9X-DMUS-021 2. Digi XTend vB 模块…

MCU配置的1106模块与1102模块功能差异分析

在现代工业自动化和智能控制领域&#xff0c;微控制器(MCU)扮演着至关重要的角色。而在MCU的配置中&#xff0c;选择适合的传感器采集模块是确保数据采集准确性和多样性的关键。其中&#xff0c;1106模块和1102模块作为两种常见的采集模块&#xff0c;各自具有独特的功能特点和…

SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值

在使用 SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值时&#xff0c;你可以结合 SQLAlchemy 的 func 模块来实现 SQL 函数的调用&#xff0c;比如 JSON_EXTRACT&#xff0c;并使用 group_by 和 count 方法来进行分组统计。下面是如何在 SQLAlchemy 中实现这一点的基本步…

sdrangel使用说明

使用说明 首先找一个usrp设备&#xff0c;我找到的是b205进行连接。打开生成的sdrangel.exe&#xff0c;第一次打开会出现空白界面 点击Add Rx Device按钮。 然后会弹出一个设备刷新窗口&#xff0c;选择你需要的设备 点击OK后&#xff0c;会响应一段时间&#xff0c;然后弹…

孙崧-回归祖国的数学天才谈国外学习研究感受

孙崧&#xff0c;这位37岁的美国加州大学伯克利分校数学系教授&#xff0c;今年正式回归祖国&#xff0c;担任浙江大学数学高等研究院杜建英讲席教授、博士生导师。在此&#xff0c;知识人网小编就经历过国外就读、从事博士后研究及任教的这位数学天才是怎么说的&#xff0c;或…

【三十二】【算法分析与设计】深搜(2),98。 验证二叉搜索树,不同方式定义递归函数,230。 二叉搜索树中第 K 小的元素,257。 二叉树的所有路径

98. 验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。…

小程序 两页面间数据传递

页面1 页面2 实现效果&#xff1a;点击页面1 可以直接跳进页面2 实现过程&#xff1a; xhtml <view class"rank" wx:for"{{rankList}}" data-ids"{{item.id}}" data-names"{{item.name}}" data-description"{{item.descri…

C++ 11 初始化对象

1 概述 在C11中&#xff0c;可以使用多种方式来初始化对象。以下是一些常见的初始化方法&#xff1a; 2 列表初始化&#xff08;Uniform Initialization&#xff09; int a{10}; // 列表初始化一个整数 int b {10}; // 同样的&#xff0c;这也是列表初始化std::string str{…

行测——言语分析

行测——言语分析 1. 全文概括题1.1 做题思路1.2 例子1.2.1 概括内容1.2.2 标题类 2.中心理解题2.1 做题思路2.2 例子2.2.1 关键词清晰2.2.2 关键词不清晰 3. 逻辑顺序题3.1 做题思路3.2 例子3.2.1 划线部分填什么句子3.2.2 句子排序3.2.3 下一段讲什么3.2.4 细节分析题 4. 逻辑…

【C/C++】BST树的后序遍历

题目描述&#xff1a; 给定一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true&#xff0c;否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树&#xff1a; 5 / \ 2 6 / \ 1 3 示例…

IPKISS ------ 导入 Lumerical S-matrix 仿真结果

IPKISS ------ 导入 Lumerical S-matrix 仿真结果 引言引言 这里给大家介绍一下如何使用 IPKISS 导入 Lumerical 中器件 S Matrix 的仿真结果。 import ipkiss3.all as i3 import matplotlib.pyplot as plt import numpy as nps_matrix = i3.device_sim.satrix1swep.from_tou…

[ RV1108_LINUX] 关于如何调整cpu中vdd_core的电压

问题描述 通过rv1108.dtsi调整其中dvfs节点下pd_core和pd_ddr对应频率的电压。发现修改后电压并没有改变&#xff0c;一直为11.25v。尝试了将pd_core下的operating-points中的1008000 1150000修改为1008000 1200000&#xff0c;也无作用。将operating-points中频率是留一个&am…

49. QT中的HTTP通信与JSON数据格式解析

1. 说明 最近参考B站以为博主的视频视频链接学习了一些在QT当中利用HTTP访问网页数据的相关知识,在此记录一下。在访问网页的时候主要用到的接口类包括:QNetworkAccessManager、QNetworkReply、QNetworkRequest,因为大部分网页数据都是以 JSON 格式保存的,所以在获取到网页…

Spring Boot Actuator

概述 Spring Boot Actuator是Spring Boot的一个功能模块&#xff0c;用于提供生产环境中常见的监控和管理功能。它提供了各种端点&#xff08;endpoints&#xff09;&#xff0c;可以用于监视应用程序的运行状况、收集应用程序的指标数据以及与应用程序进行交互。 以下是Spri…

Oracle基础-PL/SQL编程 备份

1、PL/SQL简介 PL/SQL块结构 约定&#xff1a;为了方便&#xff0c;本文后面把PL/SQL简称PL。 PL程序都是以块&#xff08;BLOCK&#xff09;为基本单位&#xff0c;整个PL块分三部分&#xff1a;声明部分&#xff08;使用DECLARE开头&#xff09;、执行部分(以BEGIN开头)和异…

数字人视频合成平台推荐

数字人讲解视频和全景作品的结合是一种全新的数字交互方式&#xff0c;可为用户提供更加直观和具有沉浸感的内容展示和交互体验&#xff0c;从而适用于诸如旅游、展览、博物馆、教育培训、泛房地产、以及娱乐和文化等应用场景。 当前数字人合成视频技术已经发展至日益成熟的阶…

Redission--分布式锁

Redission的锁的好处 Redission分布式锁的底层是setnx和lua脚本(保证原子性) 1.是可重入锁。 2.Redisson 锁支持自动续期功能&#xff0c;这可以帮助我们合理控制分布式锁的有效时长&#xff0c;当业务逻辑执行时间超出了锁的过期时间&#xff0c;锁会自动续期&#xff0c;避免…