洛谷——P1077 摆花
创始人
2024-05-26 09:11:50
0

【题目描述】

小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m 盆。通过调查顾客的喜好,小明列出了顾客最喜欢的 n 种花,从 1 到 n 标号。为了在门口展出更多种花,规定第 i 种花不能超过 a_{i} 盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。

试编程计算,一共有多少种不同的摆花方案。

【输入】

第一行包含两个正整数 n 和 m,中间用一个空格隔开。

第二行有 n 个整数,每两个整数之间用一个空格隔开,依次表示 1​,​a_{2},⋯,a_{n}​。

【输出】

一个整数 x,表示有多少种方案。注意:因为方案数可能很多,请输出方案数对 10^{6}+7 取模的结果。

样例输入

2 4
3 2

样例输出

2

解题思路

这个题目可能很容易就想到要用动态规划解题,思考的方向也是由浅入深。

用动态 f[i][j] 数组存储当前统计到的方案数(f[i][j] 代表一共有 i 种花时,摆放 j 盆的方案数),其中要初始化,也就是无论有多少种花(n),只要装盆数 m = 0 了,那么方案数就是 1,所以设置一个循环,从 i=0 到 i=n 时的 f[i][0] 赋为 1。

接下来就是考虑方案数了,先看状态转移方程的代码:

for(i=1;i<=n;i++)//遍历第 1种花到第 n种花 {for(j=0;j<=a[i];j++)//表示第 i种花有 a[i]朵,但是只放 j盆 {for(k=0;k<=m-j;k++)//原先有 k盆花 {//j和 k同时为 0,代表着 n种花装 0盆,因为先前 f[i][0]已经赋值为 1了,此时不需要进行操作if(j==0&&k==0) continue;f[i][k+j]=(f[i][k+j]+f[i-1][k])%mod; }}}

f[i][j+k] 的含义是第 i 种花摆放 j+k 盆的方案数(第 i 种花摆放 j 盆,而前 i-1 种花摆放了 k 盆,此时一共摆放了 j+k 盆花)。

最外层循环时遍历一遍所有种类的花,内层的 j 循环是从 j=0 到 j=a[i] 遍历(代表第 i 种花放了 j 盆),最内层的 k 循环是遍历原先的盆数,因为循环是不会重复,此时的状态转移方程直接是 f[i][k+j]=f[i][j+j]+f[i-1][k]。

代码如下:

#include
int a[105],f[105][105];
int main()
{int mod=1000007,n,m,i,j,k;scanf("%d %d",&n,&m);for(i=1;i<=n;i++){scanf("%d",&a[i]);f[i][0]=1;}f[0][0]=1;for(i=1;i<=n;i++)//遍历第 1种花到第 n种花 {for(j=0;j<=a[i];j++)//表示第 i种花有 a[i]朵,但是只放 j盆 {for(k=0;k<=m-j;k++)//原先有 k盆花 {//j和 k同时为 0,代表着 n种花装 0盆,因为先前 f[i][0]已经赋值为 1了,此时不需要进行操作if(j==0&&k==0) continue;f[i][k+j]=(f[i][k+j]+f[i-1][k])%mod; }}}printf("%d",f[n][m]);return 0;
} 

相关内容

热门资讯

又一次,国足输了 7月7日晚,中国男足迎来2025年东亚杯足球赛首场比赛。上半场,他们在13分钟内连丢2球,下半场再丢...
浇灭上海高温的台风啥来头?“丹... 转自:文汇报连“烧”数日的高温终于迎来缓解希望。根据上海中心气象台发布的数据,受今年第4号台风“丹娜...
美股三大股指低开 特斯拉跌超7... (转自:科创100ETF基金)  美股开盘,道指跌0.18%,标普500指数跌0.3%,纳指跌0.4...
纳斯达克中国金龙指数逆势上涨,... 每经AI快讯,7月7日,纳斯达克中国金龙指数逆势上涨,现涨0.8%,最新报7445.4点。
阿里加码外卖大战,美团的“围城... 21世纪经济报道记者 陶力、易佳颖 实习生王野 上海报道  进入7月,猝不及防地,外卖“补贴大战”骤...
一男子在杭州南站坠楼,警方通报...   今天,杭州铁路公安处发布警情通报:2025年7月7日15时30分许,旅客汪某(男,42岁,持当日...
壹连科技(301631.SZ)... 格隆汇7月7日丨壹连科技(301631.SZ)公布,公司为优化公司的资源配置,充分借助专业投资机构在...
“南京红姐”被抓 丁国锋/@法治日报记者从警方相关人士处了解到,网上盛传的南京60岁大叔男扮女装与1691名男性发生亲...
全国腰旗橄榄球讲师双训结课 转自:中国体育报  7月6日,为期3天的2025全国腰旗橄榄球D级教练员培训讲师培训班与二级裁判员培...
苏超赛程过半,三大悬念待解 江苏胜城市足球联赛赛程过半,积分格局已现三大阵营:争冠四强、中游八旅与榜尾孤军常州。十三座城池的绿茵...