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…

  • 相关阅读:
    hdu 4460spfa用map来实现
    hdu 2579
    hdu 2845
    hdu 4462
    hdu 4557
    hdu 4639
    URAL 2078 Bowling game
    UVA
    HDU 5773 The All-purpose Zero 脑洞LIS
    Codeforces Round #368 (Div. 2) C. Pythagorean Triples 数学
  • 原文地址:https://www.cnblogs.com/BorisDimitri/p/13546612.html
Copyright © 2011-2022 走看看