摆花(洛谷)

题目

原题

题目描述

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

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

输入格式

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

第二行有 n n n 个整数,每两个整数之间用一个空格隔开,依次表示 a 1 , a 2 , ⋯ , a n a_1,a_2, \cdots ,a_n a1,a2,,an

输出格式

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

样例 #1

样例输入 #1

2 4 3 2

样例输出 #1

2

提示

【数据范围】

对于 20 % 20\% 20% 数据,有 0 < n ≤ 8 , 0 < m ≤ 8 , 0 ≤ a i ≤ 8 0<n \le 8,0<m \le 8,0 \le a_i \le 8 0<n8,0<m8,0ai8

对于 50 % 50\% 50% 数据,有 0 < n ≤ 20 , 0 < m ≤ 20 , 0 ≤ a i ≤ 20 0<n \le 20,0<m \le 20,0 \le a_i \le 20 0<n20,0<m20,0ai20

对于 100 % 100\% 100% 数据,有 0 < n ≤ 100 , 0 < m ≤ 100 , 0 ≤ a i ≤ 100 0<n \le 100,0<m \le 100,0 \le a_i \le 100 0<n100,0<m100,0ai100

NOIP 2012 普及组 第三题

思路

这里的dp思路和背包问题差不多,区别是状态转移方程不同。每遍历一种花时都要从1开始遍历放这种花的个数,在可以放下的前提下,放一盆这种花的方法数等于有m-1个空位数时摆放的方法数。同理放两盆此花方法数等于有m-2个空位数时摆放的方法数.一直遍历到这种花最大可摆放数量。则有这种花的可摆数等于上述方法数相加。同理需要在店外摆放m种花的方法数等于遍历这几种花得到方法数相加。
注意点主要有以下几点

  • 当m=0时,方法数等于1.就是什么都不放。这里需要提前赋值
  • 如果使用一维数组存储dp,由于一种花的摆放方法数等于摆放1到n(此花最大可摆放数)相加,如果k(此花摆放的数量)从0开始遍历会导致。原值变成2倍,dp[j]=(dp[j]+dp[j-k])%mod;此处j和j-k相等因此会成2倍。
  • dp[0]一直等于1,不需要更新

代码

#include<iostream>
#include<cmath>
#define mod 1000007
using namespace std;
int dp[101];
int n,m;
int a[101];
int main(){cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];}dp[0]=1;for(int i=1;i<=n;i++){//遍历花for(int j=m;j>0;j--){//遍历门口摆放花数mfor(int k=1;k<=a[i]&&k<=j;k++){//dp[j]等于原值加新值,因为是方法数量dp[j]=(dp[j]+dp[j-k])%mod;}}}cout<<dp[m];
}

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

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

相关文章

IEEE Sensors Journal 投稿记录

好幸运&#xff0c;过年一个月连中两篇论文。IEEE Sensors Journal是中科院二区期刊&#xff0c;这次投稿体验感觉不错&#xff0c;遂记录于下。 2024年2月17接收&#xff0c;方向和期刊高度匹配&#xff08;传感器&#xff0c;软件硬件创新均有&#xff09;&#xff0c;速度非…

2402C++,C++的反向代理

原文 cinatra支持反向代理很简单,5行代码就可以了.先看一个简单的示例: #include "cinatra/coro_http_reverse_proxy.hpp" using namespace cinatra; int main() {reverse_proxy proxy_rr(10, 8091);proxy_rr.add_dest_host("127.0.0.1:9001");proxy_rr.a…

1401:机器翻译

分析&#xff1a;模拟题&#xff0c;用vector模拟队列实现 指向queue队首的l指针&#xff0c;指向queue队尾的r指针&#xff08;用push_back()代替也一样&#xff09; 指针更新情况为&#xff1a; 搜索有单词&#xff0c;不做处理搜索无单词&#xff0c;判断内存长度&#x…

【机器学习】机器学习常见算法详解第4篇:KNN算法计算过程(已分享,附代码)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论机器学习算法相关知识。机器学习算法文章笔记以算法、案例为驱动的学习&#xff0c;伴随浅显易懂的数学知识&#xff0c;让大家掌握机器学习常见算法原理&#xff0c;应用Scikit-learn实现机器学习算法的应用&#xff0…

房屋租赁系统的Java实战开发之旅

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

第11章 GUI

11.1 Swing概述 Swing是Java语言开发图形化界面的一个工具包。它以抽象窗口工具包&#xff08;AWT&#xff09;为基础&#xff0c;使跨平台应用程序可以使用可插拔的外观风格。Swing拥有丰富的库和组件&#xff0c;使用非常灵活&#xff0c;开发人员只用很少的代码就可以创建出…

免费申请一个美国EDU学生邮箱

EDU邮箱的作用 例如大名鼎鼎的GitHub学生包。包含各种服务器的优惠卷&#xff0c;可以让你免费使用1-2年的服务器。免费的域名。免费的网站证书。太多了。 微软&#xff1a;免费的5T的OneDrive账户。 Google&#xff1a;G Sutie Drive无限容量 微软、苹果、AWS、都有针对学…

二叉树前序中序后序遍历(非递归)

大家好&#xff0c;又和大家见面啦&#xff01;今天我们一起去看一下二叉树的前序中序后序的遍历&#xff0c;相信这个对大家来说是信手拈来&#xff0c;但是&#xff0c;今天我们并不是使用常见的递归方式来解题&#xff0c;我们采用迭代方式解答。我们先看第一道前序遍历 1…

CCF编程能力等级认证GESP—C++6级—20231209

CCF编程能力等级认证GESP—C6级—20231209 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;判断题&#xff08;每题 2 分&#xff0c;共 20 分&#xff09;编程题 (每题 25 分&#xff0c;共 50 分)闯关游戏工作沟通 答案及解析单选题判断题编程题1编程题2 单选题…

js中数字精度丢失问题详解(如何解决)

文章目录 一、场景复现二、浮点数三、问题分析小结 四、解决方案参考文献 一、场景复现 一个经典的面试题 0.1 0.2 0.3 // false为什么是false呢? 先看下面这个比喻 比如一个数 130.33333333...... 3会一直无限循环&#xff0c;数学可以表示&#xff0c;但是计算机要存…

mysql 2-17

UNION关键字和UNION ALL 自然连接 USING使用 函数 单行函数 基本函数 三角函数 指数和对数 进制间的转换 字符串函数 时间和日期函数 计算日期和时间的函数 日期的格式化和解析 流程控制函数

《剑指 Offer》专项突破版 - 面试题 47 : 二叉树剪枝(C++ 实现)

题目链接&#xff1a;LCR 047. 二叉树剪枝 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 一棵二叉树的所有节点的值要么是 0 要么是 1&#xff0c;请剪除该二叉树中所有节点的值全都是 0 的子树。例如&#xff0c;在剪除下图 (a) 中二叉树中所有节点值都为 0 的…

【NI-DAQmx入门】处理数据采集和测试系统中噪声的几种主要方法

在实际的测试系统中测量模拟信号并不总是像将信号源连接到测量设备那么简单。数据完整性取决于被控制和监视的电气设备发送和接收的干净的电信号。 电噪声可能会掩盖电信号并使其无法识别&#xff0c;从而损害原本具备功能的 DAQ 系统。数据采集​​是关键任务应用测试系统的一…

110 C++ decltype含义,decltype 主要用途

一&#xff0c;decltype 含义和举例 decltype有啥返回啥&#xff0c;auto则不一样&#xff0c;auto可能会舍弃一些东西。 decltype 是 C11提出的说明符。主要作用是&#xff1a;返回操作数的数据类型。 decltype 是用来推导类型&#xff0c;decltype对于一个给定的 变量名或…

C语言:螺旋阵

右螺旋阵 输入格式 一行&#xff0c;输入两个正整数n和m&#xff08;2≤n,m≤30&#xff09;&#xff0c;分别表示行和列数 输出格式 输出对应的右螺旋矩阵 一个4*4的右螺旋矩阵是下面这个样子的&#xff1a; 1 2 3 4 12 13 14 5 11 16 15 6 10 9 &#xff18; 7 void …

【深度优先】【广度优先】Leetcode 104 二叉树的最大深度 Leetcode 110 二叉树的最小深度

【深度优先】【广度优先】Leetcode 104 二叉树的最大深度 Leetcode 104 二叉树的最大深度解法1 深度优先 递归法 后序&#xff1a;左右中解法2 广度优先&#xff1a;层序遍历 Leetcode 110 二叉树的最小深度解法1 深度优先&#xff1a;递归 后序遍历 左右中解法2 广度优先&…

C++模板详解 —— 函数模板与类模板

C模板详解 泛型编程函数模板函数模板的概念函数模板的原理 函数模板的实例化函数模板的匹配原则类模板类模板的定义格式类模板的实例化 泛型编程 如果让你编写一个函数&#xff0c;用于两个数的交换。在C语言中&#xff0c;我们会用如下方法&#xff1a; void Swapi(int* p1,…

在PyTorch中,如何查看深度学习模型的每一层结构?

这里写目录标题 1. 使用print(model)2. 使用torchsummary库3.其余方法&#xff08;可以参考&#xff09; 在PyTorch中&#xff0c;如果想查看深度学习模型的每一层结构&#xff0c;可以使用print(model)或者model.summary()&#xff08;如果你使用的是torchsummary库&#xff0…

5.11 BCC工具之statsnoop.py简介

一,工具简介 从工具的名字也能知道,statsnoop工具用于跟踪stat()系统调用。 那么stat()系统调用是做什么的呢? stat()是很常见的一种系统调用。用于获取文件或文件系统的状态信息。通过调用 stat(),你可以获取到关于指定文件或目录的详细信息,如文件大小、文件类型、文…

2024.2.17每日一题

LeetCode N 叉树的层序遍历 429. N 叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定一个 N 叉树&#xff0c;返回其节点值的层序遍历。&#xff08;即从左到右&#xff0c;逐层遍历&#xff09;。 树的序列化输入是用层序遍历&#xff0c;每组子节点…