Codeforces544C Writing Code
题意:输入n,m,b,mod,接下来a1-a[n],n个队员,每个队员写一行就有a[i]个BUG,最后要有m行,而且bug不能超过b个的方法数
题解:n个物品放入背包,每一个可以不限制,就是完全背包,有两个花费,一个是费用的限制,一个是个数的限制,所以是二维的完全背包
#include <bits/stdc++.h> #define maxn 1001 #define ll long long using namespace std; ll dp[maxn][maxn], n, m, b, mod, v1, v2, a; void comppack(int c1,int c2){ for(int i=c1;i<=b;i++) for(int j=c2;j<=m;j++) dp[i][j] = (dp[i][j]+dp[i-c1][j-c2])%mod; } int main(){ cin>>n>>m>>b>>mod; dp[0][0] = 1; for(int i=0;i<n;i++){ cin>>a; comppack(a, 1); } for(int i=0;i<b;i++) dp[b][m] = (dp[b][m]+dp[i][m])%mod; cout<<dp[b][m]<<endl; return 0; }
posted on 2018-02-08 10:33 2855669158 阅读(140) 评论(0) 编辑 收藏 举报