zoukankan      html  css  js  c++  java
  • 九校联考-DL24凉心模拟Day1T1 餐馆(restaurant)

    1.1 题目背景

    铜企鹅是企鹅餐馆的老板,他正在计划如何使得自己本年度收益增加。

    1.2 题目描述

    共有n 种食材,一份食材i 需要花 (t_i) 小时不间断地进行播种,施肥,直至收获。当然,一份食材i 是可以直接卖掉得到 (w_i) 块钱的。
    招牌菜共有m 种,一份招牌菜i 需要消耗一定的食材,花 (T_i) 小时不间断地来烹饪,叫卖,并最终卖出得到 (W_i) 块钱。
    整个季度换算下来一共有(T_{max}) 小时可供你使用,铜企鹅需要在这期间赚到最多的钱,这样他才有足够多的钱来steam 剁手,或者氪金手游

    1.3 格式

    1.3.1 输入格式

    第一行一个整数T,表示数据组数。
    一行三个整数n; m; (T_{max}),含义如题所示。
    接下来n行,每行两个整数 (t_i) ; (w_i),含义如题所示。
    接下来m行,每行两个整数 (T_i) ; (W_i),含义如题所示。
    接下来m行,每行n 个整数,第j 个数 (d_j)表示当前招牌菜需要 (d_j) 个食材j。

    1.3.2 输出格式

    对于每组数据,输出一行一个整数,表示你所能赚到的最多的钱。

    1.4 样例

    1.4.1 样例输入

    3
    1 1 48
    2 2000
    9 21864
    54
    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 < t_i ; T_i T_max 5000; 0 w_i;W_i 109,
    每份招牌菜使用的食材的个数总数不超过10^5。

    第一眼以为是树形dp(最近做多了...)写完后面的暴力回来先写了subtask4的完全背包,然后就发现较高级的物品和基础物品没啥区别。。直接把对应的原材料所需时间加到高级物品上就好了

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    long long wei[4001],dp[5001],va[4001];
    long long read() {
    	int ret=0;
    	char c;
    	c=getchar();
    	while(c>'9'||c<'0') {
    		c=getchar();
    	}
    	while(c>='0'&&c<='9') {
    		ret=ret*10+c-'0';
    		c=getchar();
    	}
    	return ret;
    }
    int main() {
    	long long t;
    	t=read();
    	while(t--) {
    		long long n,m,T;
    		n=read();
    		m=read();
    		T=read();
    		memset(wei,0,sizeof(wei));
    		memset(dp,0,sizeof(dp));
    		memset(va,0,sizeof(va));
    		for(int i=1; i<=n; i++) {
    			wei[i]=read();
    			va[i]=read();
    		}
    		for(int i=1; i<=m; i++) {
    			wei[n+i]=read();
    			va[n+i]=read();
    		}
    		for(int i=1; i<=m; i++) {
    			for(int j=1; j<=n; j++) {
    				int x;
    				x=read();
    				wei[n+i]+=x*wei[j];
    			}
    		}
    		for(int i=1; i<=n+m; i++) {
    			for(int j=wei[i]; j<=T; j++) {
    				dp[j]=max(dp[j],dp[j-wei[i]]+va[i]);
    			}
    		}
    		printf("%lld
    ",dp[T]);
    	}
    	return 0;
    }
    
  • 相关阅读:
    Nginx配置文件nginx.conf中文详解
    Linux安装nginx
    熊猫TV游戏直播教程-OBS篇
    Mac下MySQL卸载方法
    sphinx 1.10-实时索引 api
    freebsd 国内相当快的ports源地址
    Springboot框架中如何读取位于resource资源中的properties配置文件,并将配置文件中的键对应的值赋值到目标bean中?
    分析Jedis源码实现操作非关系型数据库Redis
    分析线程池源码测试线程池
    socket简单示例实现从服务器拷贝文件到客户端
  • 原文地址:https://www.cnblogs.com/shulker/p/9609197.html
Copyright © 2011-2022 走看看