题目链接:https://vijos.org/p/1792

算法:DP

看到这题真的一点不会。。。只能爆搜一下。。但太太慢了。。看了题解后,听说是分组背包??不知道。。

好吧,,还是百度了下题解,渐渐明了。。

我们用f(i, j)来表示前i种花摆j盆的最大方案数,可以推得

f(i, j) = sum{ f(i-1, j-k) | 0<=k<=a[i], 其中a[i]为i种花的盆数 }

在这里,我们可以简化为一维的~

f(j) = sum{ f(j-k) | 0<=k<=a[i], 其中a[i]为i种花的盆数 }

这是为什么呢?我们可以这样想,第i种花要么摆1朵,要么摆2朵...要么摆a[i]朵,要么不摆。那么方案数就为它所有能摆的方案数之和

好了,上代码~一维的。

#include <cstdio>
using namespace std;
#define FOR(i, a, n) for(i = a; i <= n; ++i) const int MAX = 110, MOD = 1000007;
int i, j, k, n, m, a[MAX], f[MAX]; int main() {
scanf("%d%d", &n, &m);
FOR(i, 1, n) scanf("%d", &a[i]);
f[0] = 1;
FOR(i, 1, n) for(j = m; j >= 0; --j) FOR(k, 1, a[i]) if(j-k >= 0) f[j] = (f[j] + f[j-k]) % MOD;
printf("%d", f[m]);
return 0;
}

  

【Vijos】1792 摆花的更多相关文章

  1. Vijos_1792_摆花_(动态规划,多重集组合数)

    描述 https://vijos.org/p/1792 共n种花,第i种花有a[i]个,要摆m个,同一种花连续且花按照序号从小到大排,问共有多少种摆花方案.   描述 小明的花店新开张,为了吸引顾客, ...

  2. 【BZOJ 1061】【Vijos 1825】【NOI 2008】志愿者招募

    http://www.lydsy.com/JudgeOnline/problem.php?id=1061 https://vijos.org/p/1825 直接上姜爷论文... #include< ...

  3. NOIP2012 普及组 T3 摆花——S.B.S.

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

  4. CH Round #30 摆花[矩阵乘法]

    摆花 CH Round #30 - 清明欢乐赛 背景及描述 艺术馆门前将摆出许多花,一共有n个位置排成一排,每个位置可以摆花也可以不摆花.有些花如果摆在相邻的位置(隔着一个空的位置不算相邻),就不好看 ...

  5. vijos P1915 解方程 加强版

    背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...

  6. vijos P1780 【NOIP2012】 开车旅行

    描述 小\(A\)和小\(B\)决定利用假期外出旅行,他们将想去的城市从\(1\)到\(N\)编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市\(i\)的海拔高度为 ...

  7. 【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险

    http://www.lydsy.com/JudgeOnline/problem.php?id=2541 https://vijos.org/p/1366 loli秘制大爆搜_(:з」∠)_坑了好久啊 ...

  8. 【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流

    http://www.lydsy.com/JudgeOnline/problem.php?id=1065 https://vijos.org/p/1826 好难的题啊TWT ∈我这辈子也想不出来系列~ ...

  9. 摆花(2012Noip普及组第3题)

    摆花 (flower.cpp/c/pas) [问题描述] 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m 盆.通过调查顾客的喜好,小明列出了顾客最喜欢的 n 种花,从 1 到 n ...

随机推荐

  1. CPU tick counter

    #define rdtscll(val) \ __asm__ __volatile__ ("rdtsc" : "=A" (val)) example #incl ...

  2. string s = null 和 string s = “”的区别

    string s = null; 表示一个空串,没有占用了空间,不在内存中开辟空间 string s = "";在内存中开辟空间,但空间中没有值(""也是一个字 ...

  3. Copy List with Random Pointer

    A linked list is given such that each node contains an additional random pointer which could point t ...

  4. volatile关键字

    [本文链接] http://www.cnblogs.com/hellogiser/p/volatile.html [分析] volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编 ...

  5. Android读写assets、raw、sdard和工程文件的方法

    Android开发离不开对文件的操作,前面的文章“Android简易数据存储之SharedPreferences”和“Android数据存储之SQLite的操作”,分别讲解了简单的数据的存储和数据库数 ...

  6. UML 序列图一点理解

    激活状态,就是长方形该画到哪里呢?我的理解是,一个长方形代表调用函数的执行过程,比如下图 这个长方形就表示viewDidAppear()函数没有执行完,在这个长方形上发出或者收到的消息都是在 view ...

  7. ORACLE查询某一字段重复的数据

    第一种方法: select a.*  from ASSET_MAINTAIN a inner join ASSET_MAINTAIN b on a.asset_id=b.asset_id and a. ...

  8. 播放视频最好的 HTML 解决方法

    HTML 5 + <object> + <embed> <video width=" controls="controls"> < ...

  9. swift复合类型

     1.元组类型 (tuple) 元组就是多个元素的组合,是一个用圆括号括起来分号分隔的多个数据的一个集合体. 例如:定义一个学生变量,要求姓名 jim,年龄 19,性别 male 的元组变量为  // ...

  10. yum_rpm(利用dvd建立本地yum库)

    #wget "http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os" 建立起了index.html ...