BZOJ 2287: 【POJ Challenge】消失之物

补集转化

#include<cstdio>
using namespace std;
const int mod=10;
int n,m,F[2005],G[2005],w[2005];
int main(){
	scanf("%d%d",&n,&m);
	for (int i=1; i<=n; i++) scanf("%d",&w[i]);
	F[0]=1;
	for (int i=1; i<=n; i++)
		for (int j=m; j>=w[i]; j--)
			(F[j]+=F[j-w[i]])%=mod;
	for (int i=1; i<=n; i++){
		for (int j=0; j<=m; j++) G[j]=0;
		for (int j=0; j<=m; j++){
			G[j]=F[j];
			if (j>=w[i]) G[j]-=G[j-w[i]];
			(G[j]+=mod)%=mod;
			if (j) printf("%d",G[j]);
		}
		printf("
");
	}
	return 0;
}

  

原文地址:https://www.cnblogs.com/silenty/p/9914186.html