P1077 摆花 dp
Posted bxd123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1077 摆花 dp相关的知识,希望对你有一定的参考价值。
题目描述
小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共mm盆。通过调查顾客的喜好,小明列出了顾客最喜欢的nn种花,从11到nn标号。为了在门口展出更多种花,规定第ii种花不能超过a_iai?盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。
试编程计算,一共有多少种不同的摆花方案。
输入输出格式
输入格式:
第一行包含两个正整数nn和mm,中间用一个空格隔开。
第二行有nn个整数,每两个整数之间用一个空格隔开,依次表示a_1,a_2,…,a_na1?,a2?,…,an?。
输出格式:
一个整数,表示有多少种方案。注意:因为方案数可能很多,请输出方案数对10000071000007取模的结果。
输入输出样例
输入样例#1: 复制
2 4 3 2
输出样例#1: 复制
View Code
View Code
2
经典dp
1:
#include<bits/stdc++.h> using namespace std; //input by bxd #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define repp(i,a,b) for(int i=(a);i>=(b);--i) #define RI(n) scanf("%d",&(n)) #define RII(n,m) scanf("%d%d",&n,&m) #define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k) #define RS(s) scanf("%s",s); #define ll long long #define pb push_back #define REP(i,N) for(int i=0;i<(N);i++) #define CLR(A,v) memset(A,v,sizeof A) ////////////////////////////////// #define inf 0x3f3f3f3f #define lson l,m,pos<<1 #define rson m+1,r,pos<<1|1 const int N=4000+5; const int mod=1000007; int dp[N][N]; int main() { int n,m;RII(n,m); rep(i,0,n) dp[i][0]=1; rep(i,1,n) { int x;RI(x); rep(j,0,x)//枚举该种类花的数量 rep(k,0,m-j)//继承前面花的数量 if(j||k)//显然 不能同时为0 不然会重复 dp[i][j+k]=(dp[i][j+k]+dp[i-1][k])%mod; } cout<<dp[n][m]%1000007; return 0; }
2:
#include<bits/stdc++.h> using namespace std; //input by bxd #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define repp(i,a,b) for(int i=(a);i>=(b);--i) #define RI(n) scanf("%d",&(n)) #define RII(n,m) scanf("%d%d",&n,&m) #define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k) #define RS(s) scanf("%s",s); #define ll long long #define pb push_back #define REP(i,N) for(int i=0;i<(N);i++) #define CLR(A,v) memset(A,v,sizeof A) ////////////////////////////////// #define inf 0x3f3f3f3f #define lson l,m,pos<<1 #define rson m+1,r,pos<<1|1 const int N=4000+5; const int mod=1000007; int dp[N][N]; int main() { int n,m;RII(n,m); rep(i,0,n) dp[i][0]=1; rep(i,1,n) { int x;RI(x); rep(j,1,m) rep(k,0,x) if(j-k>=0) dp[i][j]=(dp[i][j]+dp[i-1][j-k] )%mod; } cout<<dp[n][m]%1000007; return 0; }
以上是关于P1077 摆花 dp的主要内容,如果未能解决你的问题,请参考以下文章