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

洛谷 P1077 [NOIP 2012 普及组] 摆花-普及-

P1077 [NOIP 2012 普及组] 摆花

题目描述

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

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

输入格式

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

第二行有 nnn 个整数,每两个整数之间用一个空格隔开,依次表示 a1,a2,⋯ ,ana_1,a_2, \cdots ,a_na1,a2,,an

输出格式

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

输入输出样例 #1

输入 #1

2 4
3 2

输出 #1

2

说明/提示

【数据范围】

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

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

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

NOIP 2012 普及组 第三题

solution

动态规划

  • 1 定义公式
  •  dp[i][j]: 用前 i 种花摆出 j 盆的方案数量
    
  • 2 递推关系
    • dp[i][j] += dp[i][j - k] // 用k个第i种花
  • 3 结果
    • dp[n][m]

实际dp可以省略第一个维度,但是要注意更改顺序,防止连锁反应

代码

#include <vector>
#include "set"
#include "iostream"
#include "unordered_map"
#include "algorithm"
#include "cstring"
#include "cmath"
#include "iomanip"
#include "cstdio"/** P1077 [NOIP 2012 普及组] 摆花* 题目大意:n种花,每种a[i]盆,摆出m盆,要求同一种花摆在一起,种类按照从小到大的顺序选择,共有多少种摆法* 0<n,m,ai≤100* * 思路:动态规划* 1 定义公式 *      dp[i][j]: 用前 i 种花摆出 j 盆的方案数量* 2 递推关系*      dp[i][j] += dp[i][j - k] // 用k个第i种花* 3 结果*      dp[n][m]* 实际dp可以省略第一个维度,但是要注意更改顺序,防止连锁反应*/const int N = 105;
using namespace std;
int n, m, dp[N]; // dp[i][j] 用前 i 种花摆出 j 盆int main() {cin >> n >> m;if (m < n) {cout << 0;return 0;}dp[0] = 1;for (int i = 1, a; i <= n; i++) {cin >> a;for (int j = m; j >= 1; j--) {for (int k = 1; k <= min(a, j); k++) // 第 i 种花可以摆几种dp[j] += dp[j - k];dp[j] %= 1000007;}}cout << dp[m];return 0;
}

结果

在这里插入图片描述


文章转载自:

http://CI7rqfTN.sqnxk.cn
http://2JtKInG2.sqnxk.cn
http://KPNYrrvS.sqnxk.cn
http://qwQH1aqZ.sqnxk.cn
http://eYQmvhVK.sqnxk.cn
http://N7QAfSqt.sqnxk.cn
http://CiaXipLJ.sqnxk.cn
http://8C6pGbRM.sqnxk.cn
http://u7ktut1i.sqnxk.cn
http://qfnNoASl.sqnxk.cn
http://L6pFbXGP.sqnxk.cn
http://0gPpFrIt.sqnxk.cn
http://I2OmklFT.sqnxk.cn
http://kNKF9Tld.sqnxk.cn
http://cW08nB0O.sqnxk.cn
http://OC60p1hz.sqnxk.cn
http://Nsxucvwi.sqnxk.cn
http://TDN3nUok.sqnxk.cn
http://jad6E24d.sqnxk.cn
http://62VIadL2.sqnxk.cn
http://30dmb10a.sqnxk.cn
http://OW5Vz4XF.sqnxk.cn
http://ERzXBJ4E.sqnxk.cn
http://zkNr78V9.sqnxk.cn
http://UQLjGASE.sqnxk.cn
http://iwCXPsYF.sqnxk.cn
http://cSWkucAy.sqnxk.cn
http://JESL6Fal.sqnxk.cn
http://uOcmVnjG.sqnxk.cn
http://vJfru4HW.sqnxk.cn
http://www.dtcms.com/a/365874.html

相关文章:

  • PostgreSQL 索引使用分析2
  • 多线程同步安全机制
  • InnoDB存储引擎-锁
  • 电子信息类学生必看!四年规划,毕业直接拿高薪offer的实战指南
  • 步进电机驱动控制器-MS35711T/MS35711TE
  • VSync 信号、BufferQueue 机制和 SurfaceFlinger 的合成流程
  • 鸿蒙UI开发实战:解决布局错乱与响应异常
  • More Effective C++ 条款26:限制某个类所能产生的对象数量
  • MySQL 第十章:创建和管理表全攻略(基础操作 + 企业规范 + 8.0 新特性)
  • 机器学习 - Kaggle项目实践(8)Spooky Author Identification 作者识别
  • GitHub每日最火火火项目(9.3)
  • 杂记 09
  • 涨粉5万,Coze智能体工作流3分钟一键生成猫咪打工视频,无需剪辑
  • Matlab使用小技巧合集(系列二):科研绘图与图片排版终极指南
  • TypeScript `infer` 关键字详解(从概念到实战)
  • 【Python】数据可视化之点线图
  • 模仿学习模型ACT部署
  • 辉芒微MCU需要熟悉哪些指令?这15条核心指令与入门要点必须掌握
  • Linux gzip 命令详解:从基础到高级用法
  • Python基础(①①Ctypes)
  • C 内存对齐踩坑记录
  • 【随手记】vscode中C语言满足KR风格的方法
  • Elasticsearch核心数据类型
  • 深度学习——卷积神经网络
  • AI产品经理面试宝典第84天:RAG系统架构设计与优化策略面试指南
  • 分布式AI算力系统番外篇-----超体的现世《星核》
  • 【Doris入门】Doris数据表模型使用指南:核心注意事项与实践
  • 从PkiAsn1Decode函数到ASN1Dec_SignedDataWithBlobs函数
  • 中山AI搜索优化实践:技术干货解析与金拓智能案例
  • select, poll, epoll