zoukankan      html  css  js  c++  java
  • 完全背包笔记【优化】

    优化后的完全背包

    PS:DP优化的根本就是等价变形

    AcWing链接

    优化前

    #include <bits/stdc++.h>
    using namespace std;
    
    int n,v;
    int c[1005],w[1005];
    int f[1005][1005]; 
    
    int main()
    {
    	scanf("%d%d",&n,&v);
    	for(int i=1; i<=n; i++)
    	{
    		scanf("%d%d",&w[i],&c[i]);
    	}
    	//输入
    
    	for(int i=1; i<=n; i++)
    	{
    		for(int j=1;j<=v; j++)
    		{
    			f[i][j]=f[i-1][j];
    			if(j>=w[i]) 
    			{
    				f[i][j]=max(f[i][j],f[i][j-w[i]]+c[i]);
    			}
    		}
    	}
    	//核心代码
    	
    	printf("%d",f[n][v]); 
    	
    	return 0;
    }
    

    运行时间: 76 ms
    运行空间: 4336 KB


    优化与优化前对照代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    int n,v;
    int c[1005],w[1005];
    int f[1005][1005]; 
    
    int main()
    {
    	scanf("%d%d",&n,&v);
    	for(int i=1; i<=n; i++)
    	{
    		scanf("%d%d",&w[i],&c[i]);
    	}
    	//输入
    
    	for(int i=1; i<=n; i++)
    	{
    		for(int j=1;j<=v; j++)
    		{
    			f[i][j]=f[i-1][j];
    			if(j>=w[i]) 
    			{
    				f[i][j]=max(f[i][j],f[i][j-w[i]]+c[i]);
    			}
    		}
    	}
    	//核心代码
    	
    	printf("%d",f[n][v]); 
    	
    	return 0;
    }
    

    优化后完整代码

    #include <bits/stdc++.h>
    using namespace std;
    
    int n,v;
    int c[1005],w[1005];
    int f[1005]; 
    
    int main()
    {
    	scanf("%d%d",&n,&v);
    	for(int i=1; i<=n; i++)
    	{
    		scanf("%d%d",&w[i],&c[i]);
    	}
    	//输入
    
    	for(int i=1; i<=n; i++)
    	{
    		for(int j=w[i];j<=v; j++)
    		{
    			f[j]=max(f[j],f[jw[i]]+c[i]);
    		}
    	}
    	//核心代码
    	
    	printf("%d",f[v]); 
    	
    	return 0;
    }
    

    运行时间: 36 ms
    运行空间: 216 KB

    优化前后时间、空间对比极大QAQ…

  • 相关阅读:
    根据模板自动生成数据
    CSV to XLSX (专用)
    释放用完的Excel COM组件
    配置文件的力量
    字符编解码的故事(ASCII,ANSI,Unicode,Utf-8区别)
    将结果中的省略号内容全部输出
    Powershell变量的类型
    一些用过的C#类库收集
    运算符
    特殊运算符
  • 原文地址:https://www.cnblogs.com/BorisDimitri/p/13546612.html
Copyright © 2011-2022 走看看