bdfz_2024_summer/day14/P4141/P4141.cpp

32 lines
871 B
C++
Raw Permalink Normal View History

2024-08-17 03:20:38 +00:00
//AC
#include <ios>
#include <iostream>
using namespace std;
const int MAX_N=2e3+5;
int n,m;
int w[MAX_N];
int dp[MAX_N],g[MAX_N];
int main(){
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>w[i];
}
dp[0]=1;//背包容量为0也是一种选择方案
for(int i=1;i<=n;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++){
g[0]=1;//背包容量为0也是一种选择方案
for(int j=1;j<=m;j++){
if(j<w[i])g[j]=dp[j]%10;
else g[j]=(dp[j]-g[j-w[i]]+10)%10;//不使用物品i把j容量填满的方案数 = 把j容量填满的方案总数 - (假设使用i个物品时的方案数=容量为j-w[i]时不使用i个物品的总数)
cout<<g[j];
}
cout<<endl;
}
}