第十三届蓝桥杯C++B组省赛 I 题——李白打酒加强版 (AC)
admin
2024-04-07 11:50:57
0

目录

  • 1.李白打酒加强版
    • 1.题目描述
    • 2.输入格式
    • 3.输出格式
    • 4.样例说明
    • 5.数据规模
    • 6.原题链接
  • 2.解题思路
  • 3.Ac_code

1.李白打酒加强版

1.题目描述

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

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

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

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

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

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

2.输入格式

5 10

3.输出格式

14

4.样例说明

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

010101101000000

010110010010000

011000110010000

100010110010000

011001000110000

100011000110000

100100010110000

010110100000100

011001001000100

100011001000100

100100011000100

011010000010100

100100100010100

101000001010100

5.数据规模

1≤N,M≤1001≤N,M≤1001≤N,M≤100

6.原题链接

李白打酒加强版

2.解题思路

比较明显是一道状态机dp的题目,如何定义好状态可以帮助我们更好地初始化和转移以及求解答案,根据题目范围最大为100,比较明显暗示我们做法是一个O(n3)O(n^3)O(n3)的dpdp状态也应该是三维的。定义状态f[i][j][k]f[i][j][k]f[i][j][k] 为已经遇到 iii 次店,jjj次花,还剩 kkk 斗酒的方案数。状态初始化明显是f[0][0][2]=1

对于酒的上限数量,我们应该想好范围,因为花最多只有 mmm 朵,意味着我们最多只能喝 mmm 壶酒,对于 kkk 超过 mmm 的状态都是无效状态我们无需关心。所以剩余酒的上限也就是 kkk 应该也定为 mmm 。

考虑进行状态转移,对于状态f[i][j][k]f[i][j][k]f[i][j][k],假设最后一次遇到的是店,那么此时需要保证 iii 大于0,并且 kkk 是偶数,因为遇到店剩余酒翻倍,kkk 一定不可能为奇数,那么可以得到转移方程
f[i][j][k]=(f[i][j][k]+f[i−1][j][k/2])%modf[i][j][k] = (f[i][j][k] + f[i - 1][j][k / 2]) \% modf[i][j][k]=(f[i][j][k]+f[i−1][j][k/2])%mod

假设最后一次遇到的是花,那么此时只需要保证 jjj 大于 0即可,我们可以获得转移方程f[i][j][k]=(f[i][j][k]+f[i][j−1][k+1])%modf[i][j][k] = (f[i][j][k] + f[i][j - 1][k + 1]) \% modf[i][j][k]=(f[i][j][k]+f[i][j−1][k+1])%mod

我们还得考虑答案输出什么,题目要求最后一次遇到的必须是花,那么我们直接输出 f[n][m][0]f[n][m][0]f[n][m][0] 肯定是错误的答案。 因为这并不能保证最后一次遇到的是花,因为最后是0壶酒,那么在遇到最后一朵花时应该还剩1壶酒,所以我们可以输出 f[n][m−1][1]f[n][m-1][1]f[n][m−1][1] 作为答案。

3.Ac_code

#include
using namespace std;
typedef long long LL;
typedef unsigned long long uLL;
typedef pair PII;
#define pb(s) push_back(s);
#define SZ(s) ((int)s.size());
#define ms(s,x) memset(s, x, sizeof(s))
#define all(s) s.begin(),s.end()
const int inf = 0x3f3f3f3f;
const int mod = 1000000007;
const int N = 110;int n, m;
//已经遇到i次店,j次花,还剩k斗酒的方案数
LL f[N][N][N];
void solve()
{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 <= m; ++k) {//最后一次遇到店if (i && k % 2 == 0) f[i][j][k] = (f[i][j][k] + f[i - 1][j][k / 2]) % mod;//最后一次遇到花if (j) f[i][j][k] = (f[i][j][k] + f[i][j - 1][k + 1]) % mod;}}}cout << f[n][m - 1][1] << '\n';
}
int main()
{ios_base :: sync_with_stdio(false);cin.tie(nullptr);int t = 1;while (t--){solve();}return 0;
}

相关内容

热门资讯

原创 高... 你有没有发现,几年前人人都在拼命买房,而现在,越来越多人开始思考,房子,到底还是不是财富? 这几年,...
这个春节,中国经济热力值拉满 2026年的春节,注定要在中国消费市场上留下浓墨重彩的一笔。 当9天的超长假期遇上持续加码的政策红利...
2026年中国汽车产业十大趋势... 2025年,中国汽车产业在连续17年产销量稳居全球第一的基础上,再次交出了一份充满变革与挑战的答卷。...
2022年天猫烘焙厨电行业趋势... 今天分享的是:2022年天猫烘焙厨电行业趋势白皮书 报告共计:7页 烘焙厨电迎来新变革:从“功能单一...
春节假期县城网吧人气旺,网吧又... 作者 | 豹变 张经纬 春节假期到来,如果你问回到老家的中青年男性假期玩什么,网吧可能是一个答案。...
上海“小巨人”要敲钟了!商米科... 马年伊始,港股市场就再度迎来一家上海本土科技企业。 据港交所消息,近日,上海商米科技集团股份有限公司...
原创 川... 当特朗普的关税武器让美国最高法院“缴械”时,中国、巴西反而从与美国关税战最大的受害者,变成了“最大的...
原创 刚... 白宫新闻办公室刚向媒体证实,特朗普3月底访华,最高法院转头就砸下一记重锤。 九位大法官裁定,特朗普的...
美国出手 5 亿美元委国石油,... 美国方面透露,已完成首批价值 5 亿美元的委内瑞拉石油出售,后续还将继续推进更多相关交易。这批原油大...
筑强基金集群 精准“滴灌”重点... 当下,产业投资基金已成为发展新质生产力的重要抓手,正发挥着日益重要的作用,如何引来金融活水浇灌“产业...
关于“十五五”期间支持科技创新... 财政部 中央宣传部 国家发展改革委 教育部 科技部 工业和信息化部 民政部 商务部 文化和旅游部 国...
雄安综合保税区全域封关运营 2月24日,海关总署批复同意雄安综合保税区(二期)通过验收,标志着规划面积0.63平方公里的雄安综合...
中加敲定重磅合同,特朗普对华能... 加拿大总理卡尼访华成果丰硕,不仅推动中加经贸合作迈上新台阶,更向其他西方国家释放出积极信号。在美加关...
成都和鸿科技IPO辅导备案,获... 2026年2月14日,证监会官网披露,长江证券已提交《关于成都和鸿科技股份有限公司首次公开发行股票并...
原创 马... 当诺奖得主Demis Hassabis把“推导出广义相对论”设为AGI的及格线时,整个科技圈炸了——...
滴滴春节出行数据:“反向过年”... 流动中国年味浓,人们“马”不停蹄奔向团圆。滴滴出行数据显示,“双向奔赴”成2026年春节出行新看点,...
去年韩国上市公司派息达48万亿... 来源:环球市场播报 周二公布的行业数据显示,受韩国股市前所未有的上涨行情推动,2025年韩国上市公司...
九识智能再获3亿美元融资,估值... 图为九识无人车 36氪获悉,九识智能近日完成新一轮超3亿美元融资,估值突破百亿人民币。这也意味着,就...
央行明日开展6000亿元MLF... 中国人民银行持续加码中长期资金投放,中期借贷便利(MLF)将连续12个月加量续做。 中国人民银行2月...