zoukankan      html  css  js  c++  java
  • 01背包Bone Collector

    今天复习背包,之前集训讲过,现在又忘了,昨天杭电校赛刚好有一题背包,居然不会做了,好尴尬,重新复习一下。

    https://vjudge.net/contest/150953#problem/A

    可以说是最基础的01背包了

    #include<map>
    #include<set>
    #include<list>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define ll long long
    
    using namespace std;
    
    const int maxn=600,N=1005;
    
    int main()
    {
        int t,n,W;
        ll v[N],w[N],dp[N];
        cin>>t;
        while(t--){
            memset(dp,0,sizeof(dp));
            cin>>n>>W;
            for(int i=0;i<n;i++)cin>>v[i];
            for(int i=0;i<n;i++)cin>>w[i];
            for(int i=0;i<n;i++)
                for(int j=W;j>=w[i];j--)
                    dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
           cout<<dp[W]<<endl;
        }
        return 0;
    }

    最重要的就是状态转移方程了dp[j]=max(dp[j],dp[j-w[i]]+v[i]);

  • 相关阅读:
    json
    ajax
    oracle 分页查询
    NuGet使用
    【EF】Entity Framework使用
    【mssql】增删改查笔记
    【mysql】知识点
    【angularJS】学习笔记
    C# Ninject使用
    【CSS】Table样式
  • 原文地址:https://www.cnblogs.com/acjiumeng/p/6537468.html
Copyright © 2011-2022 走看看