博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1077 摆花
阅读量:5305 次
发布时间:2019-06-14

本文共 1187 字,大约阅读时间需要 3 分钟。

题目描述

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

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

输入输出格式

输入格式:

 

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

第二行有nn个整数,每两个整数之间用一个空格隔开,依次表示a_1,a_2,…,a_na1,a2,,an

 

输出格式:

 

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

 

输入输出样例

输入样例#1: 
2 43 2
输出样例#1: 
2

说明

【数据范围】

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

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

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

NOIP 2012 普及组 第三题

 

#include
#include
#include
#include
#include
#include
using namespace std;int max(int x,int y){ if(x>=y){ return x; } else{ return y; }}int f[101][101];int main(){ int n,m,t; scanf("%d%d",&n,&m); memset(f,0,sizeof(f)); for(int i=0;i<=n;i++){ f[i][0]=1; } for(int i=1;i<=n;i++){ scanf("%d",&t); for(int j=0;j<=t;j++) for(int k=0;k<=m-j;k++){ if(j==0&&k==0){ continue; } f[i][j+k]+=f[i-1][k]; f[i][j+k]%=1000007; } } f[n][m]%=1000007; printf("%d",f[n][m]); return 0;}

  

转载于:https://www.cnblogs.com/xiongchongwen/p/11188148.html

你可能感兴趣的文章
翻译之:SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志
查看>>
pdf 右键选择默认方式失效 注册表
查看>>
03-稀疏矩阵
查看>>
45种Javascript技巧大全
查看>>
JS:offsetWidth\offsetleft 等图文解释
查看>>
Java中的TCP/UDP网络通信编程
查看>>
JAVA-初步认识-第四章-函数-两个明确-练习2
查看>>
MySQL主从复制与主主复制
查看>>
学习&使用技术的四种层次
查看>>
Python Cookbook 数据结构和算法
查看>>
Python简明教程
查看>>
ssm三大框架整合基本配置
查看>>
实验一
查看>>
php获取post参数的几种方式
查看>>
Apache与Tomcat的关系和区别 (转)
查看>>
linux内核分析 第18章读书笔记
查看>>
六度分离 HDU1869
查看>>
Agent是什么
查看>>
10、二维数组的申请(test7.java)
查看>>
Codevs 3322 时空跳跃者的困境(组合数 二项式定理)
查看>>