摆花

原创 2018年04月16日 19:01:39

1778: 摆花

时间限制: 1 Sec  内存限制: 128 MB
提交: 173  解决: 67
[提交][状态][讨论版][命题人:admin]

题目描述

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

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

输入

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

第二行有n个整数,每两个整数之间用一个空格隔开,依次表示a1、a2、……an。

0<n≤100,0<m≤100,0≤ ai≤100

输出

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

样例输入

2 4
3 2

样例输出

2

dp[i][j] 表示用前i种花摆j盆的总数

dp[i][j] = ∑dp[i-1][k]   min(0, j-a[i])<=k<=j  表示第i种花放0~a[i]朵的情况之和

#include<cstdio>
#include<algorithm>
using namespace std;
const int mod=1000007;
int dp[110];
int sum[110],a[110];
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        sum[i]=a[i]+sum[i-1];
    }
    for(int i=0;i<=a[1];i++){
        dp[i]=1;
    }
    for(int i=2;i<=n;i++){
        for(int j=m;j>=0;j--){
            for(int k=1;k<=a[i];k++){
                if(j-k>=0){
                    dp[j]=(dp[j]+dp[j-k])%mod;
                }
            }
        }
    }
    printf("%d\n",dp[m]);
    return 0;
}

下面有个大神sher杨用的是母函数来做这题。

详细可查询https://blog.csdn.net/sudu6666/article/details/79609905

#include<stdio.h>
#include <algorithm>
#include<iostream>
#include<string.h>
#include<vector>
#include<stdlib.h>
#include<math.h>
#include<queue>
#include<deque>
#include<ctype.h>
#include<map>
#include<set>
#include<stack>
#include<string>
#include<algorithm>
#define ll long long
#define INF 0x3f3f3f3f
#define FAST_IO ios::sync_with_stdio(false)
const double PI = acos(-1.0);
const double eps = 1e-6;
using namespace std;

int a[1005],c1[1005],c2[1005];
int main()
{
    int n,m;
    cin>>n>>m;

    for(int i=1;i<=n;i++)
        cin>>a[i];

    for(int i=0;i<=a[1];i++)
        c1[i]=1;

    for(int i=2;i<=n;i++)
    {
        for(int j=0;j<=m;j++)
            for(int k=0;j+k<=m && k<=a[i];k++)
                c2[j+k]+=c1[j],c2[j+k]%=1000007;
        memcpy(c1,c2,sizeof(c2));
        memset(c2,0,sizeof(c2));
    }

    cout<<c1[m]<<endl;
    return 0;
}

noip2012 摆花 (动态规划)

P2069 [NOIP2012P3]摆花 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP 2012 普及组 题3 ...
  • yuyanggo
  • yuyanggo
  • 2015-10-02 14:49:02
  • 1554

NOIP2012摆花

题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了在门口展出更多种花,规定第i种花不能超过ai盆,...
  • Rico45
  • Rico45
  • 2016-11-13 19:53:52
  • 565

noip2012普及组 摆花(DP)

题意:有n种花,每种花有ai盆,
  • slowlight93
  • slowlight93
  • 2014-11-14 01:36:19
  • 1370

摆花(DP)

题目描述 3.摆花(flower.cpp/c/pas) 【问题描述】小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m 盆。通过调查顾客的喜好,小明列出了顾客最喜欢的 n 种花,从 1...
  • w326159487
  • w326159487
  • 2018-03-17 21:21:53
  • 36

noip2012摆花

1.      摆花   题解: 说实话,我觉得这题题意不够明确,导致有些人一个测试点也过不去,坑啊。   做这题有个要注意的地方,就是并不要求每种花都要有!!   Soluti...
  • AQ14AQ1
  • AQ14AQ1
  • 2014-04-30 11:03:22
  • 1344

算法提高 摆花

算法提高 摆花 时间限制:1.0s 内存限制:128.0MB 提交此题 问题描述   小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客...
  • hg_zhh
  • hg_zhh
  • 2017-05-04 09:07:45
  • 230

洛谷 P1077 摆花

多重背包
  • Rlt1296
  • Rlt1296
  • 2016-09-29 12:53:35
  • 300

矩阵乘法(摆花)

摆花 【问题描述】 艺术馆门前将摆出许多花,一共有 n 个位置排成一排,每个位置可以摆花也 可以不摆花。有些花如果摆在相邻的位置(隔着一个空的位置不算相邻),就不 好看了。假定每种花数量无限,...
  • KatnissJ
  • KatnissJ
  • 2015-09-28 19:53:20
  • 601

CH 30 摆花 [动态规划] [矩阵快速幂优化]

czy的后宫(harem.cpp/c/pas) 【题目描述】 czy要妥善安排他的后宫,他想在机房摆一群妹子,一共有n个位置排成一排,每个位置可以摆妹子也可以不摆妹子。有些类型妹子如果摆在相邻的位...
  • ourfutr2330
  • ourfutr2330
  • 2016-10-04 19:25:42
  • 318

codevs 1315 摆花 (DP)

题意:小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时同一...
  • CillyB
  • CillyB
  • 2017-05-18 15:52:18
  • 248
收藏助手
不良信息举报
您举报文章:摆花
举报原因:
原因补充:

(最多只允许输入30个字)