题解 CF543A 【Writing Code】

发布于 2020-11-21


题意

如果任务的所有书面行最多包含b错误,那么让我们将计划称为好的。你的任务是确定有多少不同的好计划。由于计划的数量可能很大,打印其余的这个数字模给定正整数模。

解析

比较水的背包,将每一个程序员的代码都看成是不同的物品,求总质量。不过要记得初始化。

代码

#include<bits/stdc++.h>
using namespace std;
const int N=1001;
int n,m,b,mod;
int a[N],dp[N][N];
int main()
{
	ios::sync_with_stdio(false);
	cin>>n>>m>>b>>mod;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=0;i<=b;i++) dp[0][i]=1;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			for(int k=a[i];k<=b;k++)
				dp[j][k]=(dp[j][k]+dp[j-1][k-a[i]])%mod;
	cout<<dp[m][b];
	return 0;
}