Cpp环境【NOIP2012普及组】【Vijos1792】摆花

洛谷 P1077 摆花 题解 摆花 题解 洛谷 P1077 题目 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共mmm盆。通过调查顾客的喜好,小明列出了顾客最喜欢的nnn种花,从1到nnn标号。为了在门口展出更多种花,规定第iii种花不能超过aiaiai​盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。 试编程计算,一共有多少种不同的摆花方案。 输入 第一行包含两个正整数nnn和mmm,中间用一个空格隔开。 第二行有nnn个整数,每两个整数之间用一个空格隔开,依次表示aaa 1,aaa 2 阅读详情
【问题描述】   

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

  【输入格式】   

  第一行包含两个正整数 n 和 m,中间用一个空格隔开。
  第二行有 n 个整数,每两个整数之间用一个空格隔开,依次表示 a1、a 2、…、a n 。

 【输出格式】   

  输出只有一行,一个整数,表示有多少种方案。注意:因为方案数可能很多,请输出方案数对 1000007 取模的结果。

 【输入样例】 

2 4
3 2

【输出样例】

2

【样例解释】 

  有2种摆花的方案,分别是(1,1 ,1 ,2),(1,1 ,2 ,2)。括号里的1和2表示两种花,比如第一个方案是前三个位置摆第一种花,第四个位置摆第二种花。

【数据范围】   

  对于 20%数据,有 n ≤8 ,m ≤8 ,ai≤8 ;
  对于 50%数据,有 n≤20,m ≤20,ai≤20;
  对于 100% 数据,有 n≤100,m ≤100,ai≤100 。

【思路梳理】

  dp水题,非常简单的动态规划(只要你,呃,按照我们导师说的,入了门),先设状态函数d[i][j]=用前i种花中的j盆依次摆放所能够形成的不同的方案类型。对于正在填的第i行来说,所需要的每一个数据都来自于上面一行也就是第i-1行,所以可以使用二维/一维的滚动数组来实现。主意,如果使用一维滚动数组的话是要从右往左填的。
  状态转移的过程:正在考虑第i种花时,可以由已经考虑过的第i-1种花转移过来,那么第i种花可以选择limit[i]朵来摆放,也可以选择limit[j]-1朵来摆放,当然,你也可以选择0朵来摆放。所以当我们在考虑d[i][j]时,根据的是d[i-1][j],d[i-1][j-1],etc转移过来的。需要注意到的是,可能不会有d[i-1][j-limit[i]]的状态(Limit[i]可能大于j)所以我们可以得到状态转移方程(大家凑合着看理解吧=_+):

这里写图片描述

  时间复杂度:O(n*m*limit),虽然说有三重循环,但极限情况下仍然非常轻松可以通过(因为数据范围不会很大)。亲测后发现:使用二维滚动数组的速度明显快于使用普通二维数组。

【Cpp代码】
#include<cstdio>
#include<cstring>
#define maxn 105
using namespace std;
int n,m,limit[maxn],d[2][maxn];
//d[i][j]:从前i种花中选择总共j盆来摆放可以形成的方案总数 
//变为二维滚动数组 

int mod(int x)
{
    return x%1000007;
}

void solve()
{
    memset(d,0,sizeof(d));
    d[0][0]=d[1][0]=1;//d[i][0]=1,不摆就是一种方案

    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    {
        int t=0;
        for(int k=0;k<=limit[i] && k<=j;k++)
            t=mod(t+d[(i-1)%2][j-k]);
        d[i%2][j]=mod(t);
    }

    printf("%d\n",mod(d[n%2][m]));
}

int main()
{
//  freopen("in.txt","r",stdin);
//  freopen("out.txt","w",stdout);
    scanf("%d%d",&n,&m);

    for(int i=1;i<=n;i++)   scanf("%d",&limit[i]);
    solve();

    return 0;
}
从零开始STM32cubeide学习 使用的是正点原子的精英版,单片机是STM32F103ZET6,详细讲解完成跑马灯实验 阅读详情

相关推荐

高通平台Android稳定性调试笔记:手把手教你用T32、Crash Utility分析Kernel Panic与RAM Dump

本文详细介绍了高通平台Android内核崩溃的分析方法,包括使用T32 Simulator和Crash Utility工具链解析Kernel Panic与RAM Dump。从环境配置、dump文件预处理到高级调试技巧,手把手教你如何定位和解决Android系统崩溃问题,特别适用于MSM/SA8155平台的开发者。

weixin_42543046的博客 525

[NOIP2012 普及组] 摆花

没有

2301_76869282的博客 622

Matlab生成dsp程序——环境搭建(c2000系列[F28335、F2837x]都适用)

一、环境配置 (28377D的操作是一模一样就是硬件设置的时候需要选择28377d进行相应的设置) 1)matlab与ccs联合编译需要安装对应的matlab版本和ccs版本,且只有2016a以上的matlab支持c2000系列。具体对应关系参照: http://software-dl.ti.com/ccs/esd/documents/ccs_matlab.html 2)matlab版本确定之后,还需要安装有关于ccs的相关软件: I、TI Code Composer Studio xxxx(对应

qq_42151264的博客 2万+

P1077 [NOIP2012 普及组] 摆花

暴力递归如何到记忆化搜索

qq_45768588的博客 1369

科研作图不发愁:手把手教你用PyMOL给蛋白-DNA互作图‘美颜’(附完整配色与标注方案)

本文详细介绍了如何使用PyMOL对蛋白-DNA互作结构图进行专业美化,包括从PDB文件加载、结构展示与标注、互作位点突出显示到高质量渲染输出的完整流程。通过具体案例(PDB ID:8SSS)演示了锌指结构域区分、关键残基标注和互作距离测量等实用技巧,帮助科研人员制作可直接用于期刊投稿的高质量示意图。

weixin_42523792的博客 552

模拟IC实战—30天精通Sigma-delta(Σ-Δ) ADC 行为级建模与仿真

本文为模拟IC工程师提供了一套为期30天的Sigma-delta ADC行为级建模与仿真实战指南。文章深入浅出地阐释了Sigma-delta ADC如何通过过采样和噪声整形两大核心技术实现高精度转换,并重点演示了如何使用Python从零搭建一阶和二阶调制器模型,进行性能仿真与关键指标分析,为后续电路级设计提供清晰的性能预算和架构指导。

weixin_29237635的博客 398

【动态规划】摆花

一:题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。 试编程计算,一共有多少种不同的摆花方案。 输入输出格式 输入格式: 第一行包含两个正整数n和m,中间用一个空格隔开。 第二行有n个整数,每两个整数之间用一个空格隔开,依次表示a1、a2、……an。 输出格式: 输出只有一行,一个整数,表示有

oYeYiYang12的博客 2292

【ESP32-IDF笔记】20-配置以太网网络(W5500)

基于ESP32IDF和官方的ethernet驱动,配置W5500以太网驱动芯片,实现ESP32的有线网络

别看了,就这些信息 3471

CSP_[NOIP2012普及组]_摆花

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

lxnNancy的专栏 504

HQChart实战教程64-自定义分时图标题栏

分时图标题栏显示的是当前十字光标所在位置的分钟信息,显示在分时图窗口顶部。一般会显示品种的名称,日期,时间,价格,均价 涨幅,成交量,金额等等,hqchart内置会显示这些信息。如果要额外显示其他的字段,就需要通过替换格式化标题输出函数来是现实。我们在hqchart实例创建完成以后,通过OnCreatedCallback回调函数替换自己的格式化输出函数。返回 { AryText:[ { Text:文字, Color:颜色},…入参 data={ Data: 当前十字光标所在位置的分钟线 }

小银 1055

WPF实现圆形菜单动态展开折叠效果

实现效果如下: 思路:根据子菜单个数计算旋转角度动态生成子菜单,并设置展开折叠动画。 步骤: 1、自定义按钮MyButton,建立展示图像属性DisplayImage public class MyButton : Button { public static readonly DependencyProperty DisplayImageProperty = DependencyProperty.Register("DisplayImage", typeof(

dnazhd的博客 3149

蓝桥杯练习题总结(三)线性dp题(摆花、数字三角形加强版)

小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。首先,需要明确问题的要求:给定n种不同的花和每种花的最大数量限制,求出在摆放m盆花时,能够形成的不同摆花方案数。这个问题的关键在于每种花可以选择摆放的数量从0到其最大限制,且摆放的花必须按照花的种类顺序排列。首先,需要明确问题的要求:给定n种不同的花和每种花的最大数量限制,求出在摆放m盆花时,能够形成的不同摆花方案数。其他情况(即当j>0时),在没有考虑任何花的情况下是不可能摆放任何花的,这些状态默认为0,反映了不可能发生的情况。

走在努力路上的自己的博客 1985

SerDes系列之FFE均衡技术

FFE的基本结构可以在RX侧或TX侧实现,其基本工作原理相同:它通过从同一信号源应用适当的延迟来产生多径信号,然后对它们进行线性缩放和组合以消除信道ISI。

一只豌豆象的博客 4242

洛谷 P1077摆花

洛谷 P1077摆花 题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了在门口展出更多种花,规定第ii种花不能超过aia_{i}ai​ 盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。 试编程计算,一共有多少种不同的摆花方案。 思路:这道题其实思路不难,很类似于背包,状态也很好定义:dp[i][j]dp[i][j]dp[i][j]表示摆到i号花已经摆了j盆的方案数,那么转移就很自然了:

qq_42791848的博客 653

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

洛谷 python P1077 [NOIP2012 普及组] 摆花

洛谷 python P1077 [NOIP2012 普及组] 摆花

weixin_41981891的博客 2637

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

摆花(动态规划)

1. 问题描述: 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m 盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n 种花,从1 到n 标号。为了在门口展出更多种花,规定第i 种花不能超过ai 盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。试编程计算,一共有多少种不同的摆花方案。 输入描述: 第一行包含两个正整数n和m,中间用一个空格隔开。 第二行有n个整数,每两个整数之间用一个空格隔开,依次表示a1、a2、……an。输出描述: 输出只有一行,一个整数,表示

二哈 1841

洛谷——P1077 摆花

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

明里灰的博客 695

7.9 摆花 上学路线 严酷的训练(动态规划)

动态规划

weixin_63684952的博客 617

洛谷P1077 [NOIP2012 普及组] 摆花 (DP)

题意:小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 mm 盆。通过调查顾客的喜好,小明列出了顾客最喜欢的 n种花,从1到n标号。为了在门口展出更多种花,规定第 ii 种花不能超过ai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列. 试编程计算,一共有多少种不同的摆花方案。 思路: m 和 n 的范围都很小,不用对数字类型做特殊处理。至于如何求解,起码你得先搞懂题意,这个题目有一个对应的模板题目:“求和问题”。把题目翻译过来就是有 n 个数字,每个数字有自己的取值

RIPKEY的博客 1084

P1077 摆花

动态规划

weixin_64443786的博客 358

洛谷题单【动态规划2】线性状态动态规划

导弹拦截 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 输入导弹依次飞来的高度(雷达给出的高度数据是≤50000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。 输入格式 1行,若干个整数(个数≤100000) 输出格式 2行,每

付某人的博客 821

花盘摆放(题解)

那怎么得到d[i][j]?一般dp都会讨论最后一次选择,这次讨论的是第i种花选择多少,可以是1,2,...a[i],那前i-1种花就是j-1,j-2,...j-a[i];所以状态方程d[i][j]=d[i][j]+d[i-1][j-k](k<=j&&k<=a[i]);

yusen_123的博客 237

【题解】【洛谷P1077】【动态规划01背包问题】—— [NOIP2012 普及组] 摆花

dpdp。

Pantheraonca的博客 1189

摆花 (分组DP问题)

题目 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 mm 盆。通过调查顾客的喜好,小明列出了顾客最喜欢的 nn 种花,从 11 到 nn 标号。为了在门口展出更多种花,规定第 ii 种花不能超过 a_iai​ 盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。试编程计算,一共有多少种不同的摆花方案。输入格式第一行包含两个正整数 nn 和 mm ,中间用一个空格隔开。第二行有 nn 个整数,每两个整数之间用一个空格隔开,依次表示 a_1a1​ , a_2a2​ ,…

weixin_63842313的博客 492

[NOIP2012][vijos1792]摆花(dp)

题目描述传送门题解被这种傻逼题卡了半天很不爽。 f(i,j)表示前i种花,其中的最后一种花的最后一个放在第j个格子里的方案数。 因为花一定是有序的,所以直接dp就可以了。 f(i,j)=∑k=0aif(i−1,j−k)f(i,j)=\sum\limits_{k=0}^{a_i} f(i-1,j-k)刚开始一直在往前i个格子怎么放考虑,想出来一个三维dp比较恶心。转换一下思路这题其实很简单。代码

zyf2000 923
上一篇: Cpp环境【Vijos3160】【NOIP Practice】病毒分裂
下一篇: Cpp环境【NOIP2013提高组】摆火柴
cqyz_Lebmond
博客等级 码龄10年 18粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值