zoukankan      html  css  js  c++  java
  • 九校模拟——餐馆(restaurant)

    1 餐馆(restaurant) 
    1.1 题目背景 
    铜企鹅是企鹅餐馆的老板,他正在计划如何使得自己本年度收益增加。 
    1.2 题目描述 
    共有n 种食材,一份食材i 需要花ti 小时不间断地进行播种,施肥, 
    直至收获。当然,一份食材i 是可以直接卖掉得到wi 块钱的。 
    招牌菜共有m 种,一份招牌菜i 需要消耗一定的食材,花Ti 小时不 
    间断地来烹饪,叫卖,并最终卖出得到Wi 块钱。 
    整个季度换算下来一共有Tmax 小时可供你使用,铜企鹅需要在这期间 
    赚到最多的钱,这样他才有足够多的钱来steam 剁手,或者氪金手游。 
    1.3 格式 
    1.3.1 输入格式 
    第一行一个整数T,表示数据组数。 
    令i 表示为当前数据内行数。 
    第一行三个整数n; m; Tmax,含义如题所示。 
    第二行至第n + 1 行,每行两个整数ti-1;wi-1,含义如题所示。 
    第n + 2 行至第n + m + 1 行,每行两个整数T i-n-1;W i-n-2,含义如题所示。 
    第n + m + 2 行至第n + 2m + 1 行,每行n 个整数,第j 个数dj 表示招牌菜i-n-m-1 需要dj 个食材j。 
    1.3.2 输出格式 
    对于每组数据,输出一行一个整数,表示你所能赚到的最多的钱。 
    1.4 样例 
    1.4.1 样例输入 


    1 48 
    2 2000 
    9 21864 

    4 4 46 
    17 52 
    4 36 
    5 43 
    16 62 
    9 31659 
    1 20431 
    4 623 
    1 11961 
    4 5 3 5 
    5 4 3 4 
    3 3 3 3 
    4 4 5 5 
    10 0 48 
    10 41 
    18 48 
    2 14 
    22 65 
    12 77 
    7 48 
    4 85 
    2 61 
    24 85 
    8 34 
    1.4.2 样例输出 
    53728 
    410 
    1464 
    1.5 数据范围 
    Subtask| 分值|n | m | T 
    1 |3 | 1| 1| 0 
    2 |20| 1 |1 |5 
    3 |10 |4| 4| 5 
    4 |17 |2000| 0| 5 
    5 |50| 2000 |2000| 4 
    对于100% 的数据,保证0 < ti; Ti <=Tmax<= 5000; 
    0 <=wi;Wi <=10^9, 
    每份招牌菜使用的食材的个数总数不超过10^5。

     1 #include<cstdio>
     2 #include<cmath>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 long long int i,j,T,n,m,tda,k,wa,f[5005],tot = 0,p;
     7 struct node
     8 {
     9   long long int t;
    10   long long int w;
    11 }a[4005];
    12 long long read() 
    13 {
    14     int ret=0;
    15     char c;
    16     c=getchar();
    17     while(c>'9'||c<'0') {
    18         c=getchar();
    19     }
    20     while(c>='0'&&c<='9') {
    21         ret=ret*10+c-'0';
    22         c=getchar();
    23     }
    24     return ret;
    25 }
    26 int main()
    27 {
    28   scanf("%lld",&T);
    29   for(p = 1;p  <= T;p++)
    30     {
    31       n = read();
    32       m = read();
    33       tda = read();
    34       for(i = 1;i <= tda;i++)
    35     {
    36       f[i] = 0;
    37     }
    38       for(i = 1;i <= n + m;i++)
    39     {
    40           a[i].t = read();
    41         a[i].w = read();
    42     }
    43       for(i = n + 1;i <= n + m;i++)
    44     {
    45       for(j = 1;j <= n;j++)
    46         {
    47             wa = read();
    48           a[i].t += a[j].t * wa;
    49         }
    50     }
    51       for(i = 1;i <= n + m;i++)
    52     {
    53          for(j = a[i].t;j <= tda;j++)
    54         {
    55           f[j] = max(f[j],f[j - a[i].t] + a[i].w);
    56         }
    57     }
    58       printf("%lld
    ",f[tda]);
    59     }
    60   return 0;
    61 }

    *******这道题是一个多重背包哦,特别神奇,加个long long能多47分,如果要是加个读入优化,就AC啦。 
    对于招牌菜的时间要加上他所需要的食材的时间哦0.0

  • 相关阅读:
    20201216-1 文件读与写详解3
    20201214-4 文件读与写详解2
    20201214-3 文件读与写详解1
    20201214 集合及其运算
    3月17日:毕业设计计划
    3月16日:毕业设计计划
    3月15日:毕业设计计划
    3月14日:毕业设计计划
    3月13日:毕业设计计划
    3月12日:毕业设计计划
  • 原文地址:https://www.cnblogs.com/rax-/p/9609367.html
Copyright © 2011-2022 走看看