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

[蓝桥杯 2022 省 B] 李白打酒加强版

题目链接

[蓝桥杯 2022 省 B] 李白打酒加强版

题目描述

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

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

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

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

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

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

输入格式

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

输出格式

输出一个整数表示答案。由于答案可能很大,输出模 1000000007 1000000007 1000000007(即 1 0 7 + 7 10^7 + 7 107+7 ) 的结果。

输入输出样例
输入
5 10
输出
14
数据范围
  • 1 ≤ n , m ≤ 100 1 \leq n, m \leq 100 1n,m100

解法:动态规划

我们定义 f ( i , j , k ) f(i,j,k) f(i,j,k) 为 遇到店 i i i 次,遇到花 j j j 次,酒壶里有 k k k 斗酒的方案数。

我们最终要返回的是 遇到店 n n n次, 遇到花 m m m且最后一次遇到的是花,酒壶里有 0 0 0 斗酒的方案数。

实际上,它等价于 遇到店 n n n次, 遇到花 m − 1 m - 1 m1 次 ,酒壶里有 1 1 1 斗酒的方案数。因为这样保证了最后一次是遇到花的,两者实际等价,即 f ( n , m − 1 , 1 ) f(n, m - 1, 1) f(n,m1,1)

由于 m m m 不超过 100 100 100,那么 k k k 也不超过 100 100 100否则喝不完酒

我们直接讨论当前遇到的是店,还是花:

  • 如果当前遇到的是,那么 f [ i ] [ j ] [ k ] = f [ i ] [ j ] [ k ] + f [ i − 1 ] [ j ] [ k / 2 ] f[i][j][k] = f[i][j][k] + f[i - 1][j][k / 2] f[i][j][k]=f[i][j][k]+f[i1][j][k/2],这里需要保证 i > 0 i > 0 i>0 k m o d 2 = 0 k \ mod\ 2 = 0 k mod 2=0
  • 如果当前遇到的是,那么 f [ i ] [ j ] [ k ] = f [ i ] [ j ] [ k ] + f [ i ] [ j − 1 ] [ k + 1 ] f[i][j][k] = f[i][j][k] + f[i][j-1][k+1] f[i][j][k]=f[i][j][k]+f[i][j1][k+1],这里需要保证 j > 0 j > 0 j>0

初始 f [ 0 ] [ 0 ] [ 2 ] = 1 f[0][0][2] = 1 f[0][0][2]=1,表示最开始酒壶里有 2 2 2 斗酒。

最终返回的答案就是 f [ n ] [ m − 1 ] [ 1 ] f[n][m-1][1] f[n][m1][1]

时间复杂度: O ( n × m × k ) O(n \times m \times k) O(n×m×k)

C++代码:

#include <iostream>
#include <cstring>
#include <vector>
#include <functional>
#include <unordered_set>
#include <set>
#include <algorithm>using namespace std;
using LL = long long;const int MOD = 1e9 + 7;
const int N = 110;LL f[N][N][N];void solve(){int n, m;cin>>n>>m;f[0][0][2] = 1;for(int i = 0;i <= n;i++){for(int j = 0;j < m;j++){if(i == 0 && j == 0) continue; for(int k = 0;k <= 100;k++){if(k % 2 == 0 && i) f[i][j][k] += f[i - 1][j][k / 2];//操作1if(j)               f[i][j][k] += f[i][j - 1][k + 1];//操作2f[i][j][k] %= MOD;}}}cout<<f[n][m - 1][1];
}int main(){int t = 1;//cin>>t;while(t--){solve();}return 0;
}

Java代码:

import java.util.*;
import java.io.*;public class Main
{static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));static final int N = 110;static final int MOD = 1000_000_007;public static void main(String[] args) throws Exception{String[] strs = reader.readLine().split(" ");int n = Integer.parseInt(strs[0]);int m = Integer.parseInt(strs[1]);int[][][] f = new int[N][N][N];f[0][0][2] = 1;for(int i = 0;i <= n;i++){for(int j = 0;j <= m;j++){if(i == 0 && j == 0) continue;for(int k = 0;k <= 100;k++){if(k % 2 == 0 && i > 0) f[i][j][k] += f[i - 1][j][k / 2];if(j > 0)               f[i][j][k] += f[i][j - 1][k + 1];f[i][j][k] %= MOD;}}}System.out.println(f[n][m - 1][1]);}
}

相关文章:

[蓝桥杯 2022 省 B] 李白打酒加强版

题目链接 [蓝桥杯 2022 省 B] 李白打酒加强版 题目描述 话说大诗人李白&#xff0c;一生好饮。幸好他从不开车。 一天&#xff0c;他提着酒壶&#xff0c;从家里出来&#xff0c;酒壶中有酒 2 2 2 斗。他边走边唱&#xff1a; 无事街上走&#xff0c;提壶去打酒。 逢店加一倍…...

【检索增强】Retrieval-Augmented Generation for Large Language Models:A Survey

本文简介 1、对最先进水平RAG进行了全面和系统的回顾&#xff0c;通过包括朴素RAG、高级RAG和模块化RAG在内的范式描述了它的演变。这篇综述的背景下&#xff0c;更广泛的范围内的法学硕士研究RAG的景观。 2、确定并讨论了RAG过程中不可或缺的核心技术&#xff0c;特别关注“…...

EVM Layer2 主流解决方案

深度解析主流 EVM Layer 2 解决方案&#xff1a;zk Rollups 和 Optimistic Rollups 随着以太坊网络的不断演进和 DeFi 生态系统的迅速增长&#xff0c;以太坊 Layer 2 解决方案日益受到关注。 其中&#xff0c;zk Rollups 和 Optimistic Rollups 作为两种备受瞩目的主流 EVM&…...

go中结构体标签:omitempty、json꞉“name“、 gorm꞉“column꞉name“、yaml꞉“name“

在Go语言中&#xff0c;结构体标签&#xff08;Struct Tags&#xff09;提供了一种在编译时附加到结构体字段上的元数据&#xff0c;这些标签可以被运行时的反射&#xff08;reflection&#xff09;机制读取。结构体标签的存在意义和用途非常广泛&#xff0c;主要包括&#xff…...

七月论文审稿GPT第4版:通过paper-review数据集微调Mixtral-8x7b,对GPT4胜率超过80%

前言 在此之前&#xff0c;我司论文审稿项目组已经通过我司处理的paper-review数据集&#xff0c;分别微调了RWKV、llama2、gpt3.5 16K、llama2 13b、Mistral 7b instruct、gemma 7b 七月论文审稿GPT第1版&#xff1a;通过3万多篇paper和10多万的review数据微调RWKV七月论文审…...

【QT学习】1.qt初识,创建qt工程,使用按钮,第一个交互按钮

1.初识qt--》qt是个框架&#xff0c;不是语言 1.学习路径 一 QT简介 &#xff0c;QTCreator &#xff0c;QT工程 &#xff0c;QT的第一个程序&#xff0c;类&#xff0c;组件 二 信号与槽 三 对话框 四 QT Desiner 控件 布局 样式 五 事件 六 GUI绘图 七 文件 八 …...

JavaScript_与html结合方式

JavaScript_语法 ECMAScript&#xff1a;客户端脚本语言的标准 1.基本语法 1.1 与html结合方式&#xff08;2种&#xff09; 1. 内部JS 定义<script>,标签体内容就是js代码 2. 外部JS 定义<script>,通过src属性引入外部的 js文件 注意&#xff1a; 1.<script>…...

WPF —— 动画

wpf动画类型 1<类型>Animation这些动画称为from/to/by动画或者叫基本动画&#xff0c;他们会在起始值或者结束值进行动画处理&#xff0c;常用的例如 <DoubleAnimation> 2 <类型>AnimationUsingKeyFrames: 关键帧动画&#xff0c;功能要比from/to这些动画功…...

前端二维码生成工具小程序:构建营销神器的技术解析

摘要&#xff1a; 随着数字化营销的不断深入&#xff0c;二维码作为一种快速、便捷的信息传递方式&#xff0c;已经广泛应用于各个领域。本文旨在探讨如何通过前端技术构建一个功能丰富、操作简便的二维码生成工具小程序&#xff0c;为企业和个人提供高效的营销支持。 一、引言…...

光伏发电量预测(Python代码,CNN结合LSTM,TensorFlow框架)

1.数据集&#xff08;开始位置&#xff09;&#xff0c;数据集免费下载链接&#xff1a;https://download.csdn.net/download/qq_40840797/89051099 数据集一共8列&#xff0c;第一列是时间&#xff0c;特征列一共有6列&#xff1a;"WindSpeed" - 风速 "Sunshi…...

GPT带我学-设计模式11-组合模式

设计模式类型 结构型设计模式 使用场景 将对象组合成树状结构来表现"部分-整体"的层次结构。这种模式能够使得客户端对单个对象和组合对象的使用具有一致性。这句话太抽象了&#xff0c;拿一个实际的网站菜单树例子来说。 例子&#xff1a;网页菜单树 一个网站的…...

Centos7 elasticsearch-7.7.0 集群搭建,启用x-pack验证 Kibana7.4用户管理

前言 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎&#xff0c;能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心&#xff0c;它集中存储您的数据&#xff0c;帮助您发现意料之中以及意料之外的情况。 环境准备 软件 …...

[CSS]中子元素在父元素中居中

元素居中 对于当行文字居中&#xff0c;比较简单&#xff0c;设置text-align:center和text-height为盒子高度即可 对于父元素中子元素居中&#xff0c;要实现的话有以下几个方法 方法1&#xff1a;利用定位margin&#xff1a;auto <style>.father {width: 500px;heig…...

电脑突然死机怎么办?

死机是电脑常见的故障问题&#xff0c;尤其是对于老式电脑来说&#xff0c;一言不合电脑画面就静止了&#xff0c;最后只能强制关机重启。那么你一定想知道是什么原因造成的吧&#xff0c;一般散热不良最容易让电脑死机&#xff0c;还有系统故障&#xff0c;比如不小心误删了系…...

Kyligence 正式加入华为“同舟共济”行动计划,成为行业数智化“联盟级伙伴”

让“生态飞轮”旋转让“生态飞轮”旋转3月14日至15日&#xff0c;华为中国合作伙伴大会 2024 在深圳召开。本次大会以“因聚而生&#xff0c;数智有为”为主题&#xff0c;皆在升级“伙伴华为”数智体系&#xff0c;共筑解决方案竞争力&#xff0c;共赢数智世界新机遇。Kyligen…...

大模型推理框架——text-generation-inference

项目地址:https://github.com/huggingface/text-generation-inference 安装 安装rust curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs | sh安装 Protoc PROTOC_ZIP=protoc-21.12-linux-x86_64.zip curl -OL https://github.com/protocolbuffers/protobuf/relea…...

电梯四种事故检测YOLOV8

电梯四种事故检测&#xff0c;采用YOLOV8训练得到PT模型&#xff0c;然后转换成ONNX&#xff0c;OPENCV调用&#xff0c;支持C/PYTHON/ANDORID开发 电梯四种事故检测YOLOV8...

构建docker环境下的thunder迅雷插件

前言 从迅雷群晖套件中提取出来用于其他设备的迅雷远程下载服务程序。仅供测试&#xff0c;测试完请大家自觉删除。 下载保存目录 /xunlei/downloads&#xff0c; 对应迅雷应用内显示的下载路径是 /downloads 或者 /迅雷下载 仓库 阿里云镜像&#xff08;国内访问&#xff…...

Django开发复盘

一、URL 对于一个不会写正则表达式的蒟蒻来说&#xff0c;在urls.py中就只能傻傻的写死名字&#xff0c;但是即便这样&#xff0c;还会有很多相对路径和绝对路径的问题&#xff08;相对ip端口的路径&#xff09;&#xff0c;因为我们网页中涉及到页面跳转&#xff0c;涉及到发送…...

第6章 数据存储操作

思维导图 6.1 引言 数据存储与操作包括对存储数据的设计、实施和支持&#xff0c;最大化实现数据资源的价值&#xff0c;贯穿于数据创建/获取到处置的整个生命周期。 6.1.1 业务驱动因素 数据存储与操作活动对于依赖数据的企业来说非常关键&#xff0c;这些活动的主要驱动因素是…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

CSS3相关知识点

CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目

应用场景&#xff1a; 1、常规某个机器被钓鱼后门攻击后&#xff0c;我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后&#xff0c;我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...