zoukankan      html  css  js  c++  java
  • [JZOJ P1270] [DP]采药

    @kaike

    传送门

    呐么简单我还需要专门写篇博客记录一下?

    0/1 背包问题

    大经典问题你不记录想等以后忘记嘛

    f[i]=max(f[i],f[i-weight]+value)

    当前的最优值就是加不加这个东西的价值

    依次递推

    最大值就是在背包满的时候辣

     

     

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 using namespace std;
     5 int t,m,f[1010],maxx=0;
     6 struct qwq
     7 {
     8     int tt,vv;
     9 }a[150];
    10 int main()
    11 {
    12     memset(f,0,sizeof(f));
    13     //若要求“恰好装满”,f[0]=0,f[i]=-INF
    14     //若不用恰好,全部为0
    15     cin>>t>>m;
    16     for(int i=1;i<=m;i++)
    17         cin>>a[i].tt>>a[i].vv;//应该用两个数组的,毕竟不用排序,太蠢辣
    18     for(int i=1;i<=m;i++)//枚举草药
    19         for(int j=t;j>=a[i].tt;j--)//枚举剩下的空间
    20             f[j]=max(f[j],f[j-a[i].tt]+a[i].vv);//记住大工式可以解决好多问题
    21     cout<<f[t]<<endl;//最大值不在草药那里,在时间那里,记住辣
    22     return 0;
    23 }
    你好蠢

     

     

    No matter how you feel, get up , dress up , show up ,and never give up.
  • 相关阅读:
    08简单推导:手机尾号评分
    07简单推导:生日蜡烛
    06普通推导
    05简单推导:猴子吃桃
    简单推导
    03map用法
    List题目
    02List的使用
    01基础知识
    HDU
  • 原文地址:https://www.cnblogs.com/Kaike/p/5943265.html
Copyright © 2011-2022 走看看