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("\n"); } return 0; }