codeforce problem 544 C

题意:有n个程序员,他们每行会有ai个BUG,问写m行代码产生不超过b个bug的方案

思路:dp[i][j]代表i行产生j个BUG 方案,dp[i][j]+=dp[i-1][j-第x个程序员产生的bug数]

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int N=502;
 4 
 5 int dp[N][N];
 6 
 7 int main(){
 8     int n,m,b,mod;
 9     cin>>n>>m>>b>>mod;
10     memset(dp,0,sizeof(dp));
11     dp[0][0]=1;
12     int x;
13     for(int i=1;i<=n;i++){
14         scanf("%d",&x);
15         for(int j=1;j<=m;j++){
16             for(int k=x;k<=b;k++){
17                 dp[j][k]=(dp[j][k]+dp[j-1][k-x])%mod;
18             }
19         }
20     }
21     int sum=0;
22     for(int i=0;i<=b;i++){
23          sum=(sum+dp[m][i])%mod;
24      //   cout<<i<<" "<<dp[n][i]<<endl;
25     }
26 
27     cout<<sum<<endl;
28 }
原文地址:https://www.cnblogs.com/hhxj/p/7191062.html