zoukankan      html  css  js  c++  java
  • !HDU 2602 Bone Collector--DP--(裸01背包)

    题意:这题就是一个纯粹的裸01背包

    分析:WA了好几次。01背包实现的一些细节没搞懂

    1.为什么dp[i][j]赋初值为0而不是value[i]。由于第i个石头可能不放!

    2.在进行状态转移之前要dp[i][j]=dp[i-1][j],不然肯定会WA啊。想想就明确了

    3.终于结果是dp[n][v],不是每次求mx,由于状态转移就是这么推的啊

    代码:

    #include<iostream>
    #include<cstring>
    #include<cmath>
    using namespace std;
    long long dp[1001][1001],va[1001],mx;
    int t,n,v,vo[1001];
    int main()
    {
    	cin>>t;
    	while(t--){
    		cin>>n>>v;
    		mx=-1;
    		for(int i=1;i<=n;i++) cin>>va[i];
    		for(int i=1;i<=n;i++) cin>>vo[i];
    		for(int i=1;i<=n;i++) for(int j=0;j<=v;j++) dp[i][j]=0;  //错误1
    		for(int i=1;i<=n;i++){
    			for(int j=0;j<=v;j++){
    				dp[i][j]=dp[i-1][j];                    //错误2
    				if(vo[i]<=j) dp[i][j]=dp[i][j]>dp[i-1][j-vo[i]]+va[i]?dp[i][j]:dp[i-1][j-vo[i]]+va[i];
    			}
    		    
    		}
    		mx=dp[n][v];     //错误3
    		cout<<mx<<endl;
    	}
    }


  • 相关阅读:
    数据解压
    子区域数据合并
    数据压缩复制
    将Win10变回Win7/WinXP界面
    通过GP加载卫星云图-雷达图-降雨预报图
    Maven版本与JDK版本
    由输入法随想
    selinux开关
    android studio 配置
    NodeJS 笔记
  • 原文地址:https://www.cnblogs.com/llguanli/p/8416366.html
Copyright © 2011-2022 走看看