1. 程式人生 > >[Luogu4141] 消失之物 [01揹包]

[Luogu4141] 消失之物 [01揹包]

tips.\frak{tips.}分治不是必要的。fft\frak{fft}也不是必要的。 其實很好想,做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和分治的做法可以看洛谷題解

emmmm