題目鏈接:消失之物
直接暴力揹包是不行的。
然後考慮對每一個物品做一次退揹包即可。
AC代碼:
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int N=2e3+10;
int w[N],dp[N],g[N],n,m;
signed main(){
cin>>n>>m; dp[0]=1;
for(int i=1;i<=n;i++){
scanf("%d",&w[i]);
for(int j=m;j>=w[i];j--) dp[j]=(dp[j]+dp[j-w[i]])%10;
}
for(int i=1;i<=n;i++){
for(int j=0;j<w[i];j++) g[j]=dp[j];
for(int j=w[i];j<=m;j++) g[j]=(dp[j]-g[j-w[i]]+10)%10;
for(int j=1;j<=m;j++) printf("%d",g[j]);
puts("");
}
return 0;
}