• Piggy-Bank HDU


    解法

    完全装满背包

    求最小值那么把所有的dp设置成inf(要完全装满),且转移方程写min,原点设置为0,然后套完全背包就可以了

    能不能完全装满的检测就是看dp[m]有没有更新,更新了那么就是能完全装满否则完全装不满

    代码

    #include <bits/stdc++.h>
    using namespace std;
    int dp[1000005],v[1000],w[1000];
    int main()
    {
      ios::sync_with_stdio(0);
      cin.tie(0);
      cout.tie(0);
      int t;
      cin>>t;
      while(t--)
      {
        int m1,m2;
        cin>>m1>>m2;
        int m=m2-m1;
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
        cin>>w[i]>>v[i];
        fill(dp,dp+1000005,999999999);
        dp[0]=0;
        for(int i=0;i<n;i++)
        for(int j=v[i];j<=m;j++)
        dp[j]=min(dp[j],dp[j-v[i]]+w[i]);
        if(dp[m]==999999999)
        cout<<"This is impossible.
    ";
        else
        cout<<"The minimum amount of money in the piggy-bank is "<<dp[m]<<".
    ";
      }
    }
    
  • 相关阅读:
    Python基础07
    python基础06
    python基础05
    python基础04
    python基础03
    python基础02
    python组件之wtforms
    PythonWeb框架之Flask
    Linux下yum安装Redis
    在vuex的mutations中使用vue的小技巧
  • 原文地址:https://www.cnblogs.com/baccano-acmer/p/10241677.html
Copyright © 2020-2023  润新知