首页 > 代码库 > bzoj2287:[POJ Challenge]消失之物
bzoj2287:[POJ Challenge]消失之物
思路:首先先背包预处理出f[x]表示所有物品背出体积为x的方案数。然后统计答案,利用dp。
C[i][j]表示不用物品i,组成体积j的方案数。
转移公式:C[i][j]=f[j]-C[i][j-w[i]]
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; #define maxn 2005 int n,m; int f[maxn],w[maxn],ans[maxn]; int main(){ scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) scanf("%d",&w[i]);f[0]=1; 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++){ memset(ans,0,sizeof(ans)),ans[0]=1; for (int j=1;j<=m;j++){ if (j>=w[i]) ans[j]=((f[j]-ans[j-w[i]])%10+10)%10; else ans[j]=f[j]; printf("%d",ans[j]); } puts(""); } return 0; }
bzoj2287:[POJ Challenge]消失之物
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。