首页 > 其他分享 >李白打酒

李白打酒

时间:2023-07-30 23:47:20浏览次数:19  
标签:leq ## 打酒 样例 int 李白

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

## 题目描述

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

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

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

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

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

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

## 输入格式

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

## 输出格式

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

## 样例 #1

### 样例输入 #1

```
5 10
```

### 样例输出 #1

```
14
```

## 提示

**【样例说明】**

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

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

**【评测用例规模与约定】**

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

对于 $100 \%$ 的评测用例:$1 \leq N, M \leq 100$。

蓝桥杯 2022 省赛 B 组 I 题。

 

//[蓝桥杯 2022 省 B] 李白打酒加强版
//认真思考每个状态,也有可能是三维的,反复推敲推导过程
//搜索很明显时间复杂度超了,考虑动态规划
//设计三个状态,酒庄,花店,有几斗酒
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=105,mod=1e9+7;
int f[N][N][N],n,m,res;
signed main()
{
    cin>>n>>m;
    f[0][0][2]=1;
    for(int i=0;i<=n;i++)
        for(int j=0;j<=m;j++){
            if(!i&&!j) continue;
            for(int k=0;k<=m;k++){
                if(!(k%2)&&i) f[i][j][k]+=f[i-1][j][k/2];
                if(k+1<=m&&j) f[i][j][k]+=f[i][j-1][k+1];
                f[i][j][k]%=mod;
            }
        }
    cout<<f[n][m-1][1]%mod;
    return 0;
}

 

标签:leq,##,打酒,样例,int,李白
From: https://www.cnblogs.com/o-Sakurajimamai-o/p/17592367.html

相关文章

  • 2014 蓝桥杯 预赛 c/c++ 本科B组 第三题:李白打酒 (8' )
    第三题:李白打酒(8')  话说大诗人李白,一生好饮。幸好他从不开车。  一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:  无事街上走,提壶去打酒。  逢店加一倍,遇花喝一斗。  这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。......
  • Python趣味编程3则:李白买酒、猴子吃桃、宝塔上的琉璃灯
    1、李白买酒问题描述:李白街上走,提壶去买酒。遇店加一倍,见花喝一斗。店不相邻开,花不成双长。三遇店和花,喝光壶中酒。请问此壶中,原有多少酒?简单分析:题目中加一倍是指再购买和壶中酒同样数量的酒,喝一斗是指喝掉壶中的一斗酒。根据描述,李白应该是先后遇到了酒店、鲜花、酒店、鲜花、酒......
  • P8786 李白打酒加强版 题解
    李白打酒加强版题目大意一开始酒显里有\(2\)斗酒,每遇到一次店就会把酒显里的酒数量(单位:斗)乘\(2\),每遇到一次花就把酒显里的酒喝掉\(1\)斗。这一路上一共遇到店\(n\)次,遇到花\(m\)次,且最后一次遇到的是花,酒显里没有一斗酒了。计算这一路上遇到店和花的顺序总共有......
  • 根据 大峡谷国家公园, 写一首李白风格的诗
    大峡谷,天然屏障,险峻绝壁挡云霄。沉淀岁月千万载,鬼斧神工刻画成。石壁上,千仞悬崖,奇峰怪石耸苍天。百里观音俯世间,宏伟壮阔震人心。流云间,孤鹰翱翔,蔚蓝天空放眼望。仰望群峰云雾里,犹如仙境梦中藏。李白曾谱华章诗,今我到此叹惊叹。壮观壮美妙不可言,大自然之美亘古传。......
  • 李白喝酒问题
    一、问题提出。“李白街上走,提壶去买酒,遇店加一倍,见花喝一斗”,途中,遇见5次店,见了10此花,壶中原有2斗酒,最后刚好喝完酒,要求最后遇见的是花,求可能的情况有多少种?二、设计思路。分析:题目要求最后是遇见花也就是说最后是喝酒(最好刚好把酒完),出去这种确定的情况,最后剩下的情况是:还有......
  • 蓝桥-13届-C++-B组-省赛-I题-李白打酒加强版
    最直接的做法,算是回溯吧:生成指定01数的序列挨个检查是否满足题意并计数能不能将生成和判断的过程统一呢?能不能记忆前面的序列呢瞄一眼题解,往动态规划的方向上靠#inc......
  • 「BFS」李白斗酒诗百篇
    本题为12月25日22寒假集训每日一题题解题目来源:(未知)题面题目描述李白斗酒诗百篇,长安市上酒家眠,天子呼来不上船,自称臣是酒中仙。出自唐代杜甫的《饮中八仙歌》......
  • C语言递归算法解决李白打酒问题
    一、概念递归算法(英语:recursionalgorithm)在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。递归式方法可以被用于解决很多的计算机科学问题,因此......
  • 李白《月下独酌-花间一壶酒》的UML建模
    <!--原文发表于2014年9月22日,换了高清无码图片,重新排版重发。-->中秋节前,我发布了一个广告,请大家用UML建模方法剖析李白的作品《月下独酌-花间一壶酒》,仅有两位同学交来作品......
  • [旧文]李白《月下独酌-花间一壶酒》的UML建模
    李白《月下独酌-花间一壶酒》的UML建模潘加宇中秋节前,我发布了一个广告,请大家用UML建模方法剖析李白的作品《月下独酌-花间一壶酒》,仅有两位同学交来作品,所以这两位同学都将......