zoukankan      html  css  js  c++  java
  • P1048 采药

    ————————————————————————

    Dp的入门题啊,但我只能写记忆化,因为考试蒙个记忆化我还能行qwq

    ————————————————————————

    题目:P1048

    这种题记忆化还是能看懂的,(DP是大犇的做法)

    ___________________________________________

    /*
    
    我觉得我应该多练一下记忆化搜索,毕竟考试肯定有dp但又不会状态转移,
    
    就只能记忆化代替了
     
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int t,m;
    int dp[1010][1010];
    int wei[1010];
    int val[1010];
    int dfs(int i,int weigh)
    {
        if(i>m)//边界 
        return 0;
        if(dp[i][weigh]!=-1)
        return dp[i][weigh];
        for(int j=weigh;j>=0;--j)//因为这是背包 
        {
            if(j>=wei[i])//能放下就有两种可能
            //放和不放 
            return dp[i][weigh]=max(dfs( i+1,weigh-wei[i])+val[i],dfs(i+1,weigh));
            else//不然,就是不放,下一个 
            return dp[i][weigh]=dfs(i+1,weigh);
        }
    }
    int main(){
        cin>>t>>m;
        memset(dp,-1,sizeof(dp));
        for(int i=1;i<=m;++i)
        cin>>wei[i]>>val[i];
        cout<<dfs(1,t);//从空开始 
        return 0;
    } 
    AC

    That's all.

  • 相关阅读:
    consumer详解
    消费幂等
    死信队列
    消息重试
    负载均衡
    存储层
    producer消息
    消息发送与接收
    TCC
    form表单提交前进行加密
  • 原文地址:https://www.cnblogs.com/For-Miku/p/10848821.html
Copyright © 2011-2022 走看看