P1077 摆花
链接:Miku
----------------------------------------------
发现大家基本上都是令
> dp[ i ] [ j ] 为用前 i 种花,摆 j 盆的总方案数
然而本蒟蒻乱搞一通,搞出来了这个东西
>dp[ i ] [ j ] 为在第i个位置摆第j种花的总方案书
这样答案就是 dp[m][1-n]的和了
-------------------------------------------
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<iostream> 2 using namespace std; 3 int n,m; 4 int a[1000]; 5 int dp[1000][1000]; 6 int mod=1000007; 7 int main(){ 8 cin>>n>>m; 9 for(int i=1;i<=n;++i) 10 cin>>a[i]; 11 dp[0][0]=1; 12 for(int i=1;i<=m;++i){ 13 for(int j=1;j<=n;++j){ 14 for(int k=1;k<=a[j]&&i-k>=0;++k){ 15 for(int ii=0;ii<j;++ii){ 16 dp[i][j]+=dp[i-k][ii]; 17 dp[i][j]%=mod; 18 } 19 } 20 } 21 } 22 int ans=0; 23 for(int i=1;i<=n;++i) 24 { 25 ans+=dp[m][i]; 26 ans%=mod; 27 } 28 cout<<ans; 29 return 0; 30 }