zoukankan      html  css  js  c++  java
  • 消失之物【背包回退】

    题目链接

    题目解析

    我们知道(01)背包方案数的递推式长这样:

    (f[j]+=f[j-w[i]])

    如果一件物品不选,就会少一次这样的转移贡献。

    于是我们把这个贡献还回去。

    (g[j]-=g[j-w[i]])

    就做完了。


    ►Code View

    #include<cstdio>
    #include<algorithm>
    #include<queue>
    #include<cstring>
    using namespace std;
    #define N 2005
    #define M 700005
    #define MOD 10
    #define INF 0x3f3f3f3f
    #define LL long long
    int rd()
    {
    	int x=0,f=1;char c=getchar();
    	while(c<'0'||c>'9'){if(c=='-') f=-1; c=getchar();}
    	while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+(c^48); c=getchar();}
    	return f*x;
    }
    int n,m;
    int w[N],f[N],g[N];
    int main()
    {
    	//freopen("candies.in","r",stdin);
    	//freopen("candies.out","w",stdout);
    	n=rd(),m=rd();
    	for(int i=1;i<=n;i++)
    		w[i]=rd();
    	f[0]=1;
    	for(int i=1;i<=n;i++)
    		for(int j=m;j>=w[i];j--)
    			f[j]=(f[j]+f[j-w[i]])%MOD;
    	for(int i=1;i<=n;i++)
    	{
    		g[0]=1;
    		for(int x=1;x<=m;x++)
    		{
    			if(w[i]>x) g[x]=f[x]%MOD;
    			else g[x]=(f[x]-g[x-w[i]]+MOD)%MOD;
    			printf("%d",g[x]);//这输出格式好丑啊qwq 
    		}
    		puts("");
    	}
    	return 0;
    }
    
  • 相关阅读:
    C语言位操作
    Ribbon负载规则的替换
    Nginx 的配置文件
    Nginx 操作常用的命令
    Nginx 是什么?
    SpringCloud Eureka 新版本依赖
    @Autowired 与@Resource的区别
    spring 注释
    redis 的 rdb 和 aof 持久化的区别
    jdk1.7下HashMap的头插法问题
  • 原文地址:https://www.cnblogs.com/lyttt/p/14050615.html
Copyright © 2011-2022 走看看