zoukankan      html  css  js  c++  java
  • dp之完全背包 hdu--2159一维数组做法

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    using namespace std;
    int main()
    {
        int n,m,t,s;
        int dp[205];
        int w[205];
        int v[205];
        int cnt[205];
        while(~scanf("%d %d %d %d",&n,&m,&t,&s))
        {
            memset(dp,0,sizeof(dp));
            memset(cnt,0,sizeof(cnt));
            for(int i=0;i<t;i++)
            {
                scanf("%d %d",&v[i],&w[i]);
            }
            for(int i=0;i<t;i++)
            {
                for(int j=w[i];j<=m;j++)//顺序,如果逆序的话就是01背包的问题了
                {
                    if(dp[j]<dp[j-w[i]]+v[i])
                    {
                        cnt[j]=cnt[j-1]+1;//如果多取一件东西的经验更多的话,就打怪次数增加
                        dp[j]=dp[j-w[i]]+v[i];
                    }
                }
            }
            int ans=-1;
            for(int j=0;j<=m;j++)
            {
                if(dp[j]>=n&&cnt[j]<=s)
                {
                    ans=m-j;
                    break;
                }
            }
             cout<<ans<<endl;
        }
        return 0;
    }

  • 相关阅读:
    ajax工作原理
    ajax 和xmlHttpRequest区别
    ajax 基本语法
    javascript 中XMLHttpRequest 实现前台向后台的交互
    Javascript 中ajax实现前台向后台交互
    javascript 中函数eval()
    两道有趣的面试题
    linux 中的快捷键
    linux awk命令详解
    linux sed命令详解
  • 原文地址:https://www.cnblogs.com/chinacwj/p/7053844.html
Copyright © 2011-2022 走看看