[Luogu4141] 消失之物 [01揹包]
阿新 • • 發佈:2018-12-16
分治不是必要的。也不是必要的。 其實很好想,做01揹包的逆過程就可以還原了。 注意看題,要模。
#include<cstdio>
#include<algorithm>
using namespace std;
int N,M;
int F[2005]={};
int T[2005]={};
int W[2005]={};
int main()
{
F[0]=1; scanf("%d%d",&N,&M);
for(int i=1;i<=N;++i) scanf("%d",&W[ i]);
for(int i=1;i<=N;++i) for(int j=M;j>=W[i];--j) F[j]+=F[j-W[i]],F[j]%=10;
for(int i=1;i<=N;++i)
{
for(int j=0;j<=M;++j) T[j]=F[j];
for(int j=W[i];j<=M;++j) T[j]=(T[j]-T[j-W[i]]+10)%10;
for(int j=1;j<=M;++j) printf("%d",T[j]);
putchar('\n');
}
return 0;
}
FFT和分治的做法可以看洛谷題解