• ACM1881 01背包问题应用


    01背包问题动态规划应用

    acm1881毕业bg

    将必须离开的时间限制看作背包容量,先将他们由小到大排序,然后在排完序的数组中对每个实例都从它的时间限制开始(背包容量)到它的延长时间进行遍历;

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 using namespace std;
     5 struct BG
     6 {
     7     int h,t,l;
     8     friend bool operator<(BG a,BG b)    
     9     {
    10         return a.l<b.l;
    11     }
    12 };
    13 BG *bg;
    14 int main()
    15 {
    16     int n,m;
    17     int value[3500];
    18     while(cin>>n&&n>=0)
    19     {
    20         m=0;
    21         if(n==0)
    22         {
    23             cout<<0<<endl;
    24             continue;
    25         }
    26         bg=new BG[n];
    27         memset(value,0,sizeof(value));
    28         for(int i=0;i<n;i++)
    29         {
    30             cin>>bg[i].h>>bg[i].t>>bg[i].l;
    31             m=(bg[i].l>m)?bg[i].l:m;
    32         }
    33         sort(bg,bg+n);
    34         for(int i=0;i<n;i++)
    35         {
    36             for(int j=bg[i].l;j>=bg[i].t;j--)
    37             {
    38                 value[j]=max(value[j],value[j-bg[i].t]+bg[i].h);
    39             }
    40         }
    41         int ans=0;
    42         for(int i=0;i<=m;i++)
    43         {
    44             if(value[i]>ans)ans=value[i];
    45         }
    46         cout<<ans<<endl;
    47     }
    48     return 0;
    49 }
    What I don't dare to say is I can't!
  • 相关阅读:
    大数减法
    MySQL配置的一些坑
    最大流_Edmonds-Karp算法
    最小生成树两连
    最短路三连
    对拍
    Broadcast
    Intent
    Custom Views
    Fragment
  • 原文地址:https://www.cnblogs.com/sytu/p/3871549.html
Copyright © 2020-2023  润新知