消失之物

題目鏈接:消失之物


直接暴力揹包是不行的。

然後考慮對每一個物品做一次退揹包即可。


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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章