1025 选菜

1025 选菜

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 黄金 Gold

题解

题目描述 Description

在小松宿舍楼下的不远处,有PK大学最不错的一个食堂——The Farmer’s Canteen(NM食堂)。由于该食堂的菜都很不错,价格也公道,所以很多人都喜欢来这边吃饭。The Farmer’s Canteen的点菜方式如同在超市自选商品一样,人们从一个指定的路口进去,再从一个指定的路口出来并付款。由于来这里就餐的人数比较多,所以人们自觉地在进入口的时候就排成一个长队,沿着长长的摆放着各式各样佳肴的桌子进行选菜。

小松发现,这种选菜方式意味着,他不能在选菜的时候离开队伍去拿一些他已经看过了的菜或者没有看过的菜,因为插队是不礼貌的,也是被BS的。

每个菜有一个价值,而小松也自己给每个菜定了一个在他看来的美味价值,例如红烧小黄鱼在小松看来是美味价值很高的,而花菜在小松眼里则是美味价值极低的菜肴。而有一些菜是营养价值极其高的菜(例如米饭),所以无论它的美味价值是多少,小松都会选择1份。现在小松带了X元钱来食堂就餐,他想知道,在不欠帐的情况下,他选菜的美味价值总合最大是多少。

输入描述 Input Description

请从输入文件farmer.in中读入相关数据。输入的第一行包括两个个整数n(1≤n100),k(0k实际菜的种类)和一个实数X(0≤X100),表示有n个菜式,有k种菜是必选的,小松带来了X元钱(精确到“角”)。接下来的1行包含n个实数,表示菜桌上从入口到出口的所有菜的价格(0价格10,单位“元”,精确到“角”);再接下来的1行包含n个整数,表示菜桌上从入口到出口的所有菜的美味价值(0美味价值100);再接下来一行包含n个整数,表示菜桌上从入口到出口的所有菜的种类编号(1种类编号100)。最后一行包含k个整数分别表示必选菜的种类编号。要注意的是,同一种编号的菜可以出现多次,但是他们的价格和美味价值都是一样的。对于同一种菜(无论是不是必选菜),小松最多只会选择1份(买两份红烧豆腐多没意思啊)。另外,必选菜的价格之和一定不超过X

输出描述 Output Description

请将结果输出到输出文件farmer.out中。输出包含一个整数,表示小松能选到的菜的美味价值总和最大是多少。

       注:你可以假设数据中不会出现小松带的钱不够买必买菜的情况。

样例输入 Sample Input

7 1 5.0

4 1 3 0.9 2 0.5 0.9

7 3 5 2 5 0 2

6 3 5 2 4 1 2

2

样例输出 Sample Output

10

数据范围及提示 Data Size & Hint

分类标签 Tags 点此展开

动态规划 背包型DP

AC代码:

#include<cstdio>
#include<iostream>
using namespace std;
#define N 1001
int f[N],b[N],s;
struct node{
    int jg;
    int mw;
    int bh;
}t[N];
int main(){
    int n,m;
    double xx,x1;
    scanf("%d%d",&n,&m);
    scanf("%lf",&xx);
    int x=xx*10;
    for(int i=1;i<=n;i++) scanf("%lf",&x1),t[i].jg=x1*10;
    for(int i=1;i<=n;i++) scanf("%d",&t[i].mw);
    for(int i=1;i<=n;i++) scanf("%d",&t[i].bh);
    for(int i=1;i<=m;i++) scanf("%d",&b[i]);
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
            if(t[i].bh==t[j].bh)
                t[j].bh=0;
    for(int i=1;i<=m;i++)
        for(int j=1;j<=n;j++)
            if(b[i]==t[i].bh){
                s+=t[i].mw;
                x-=t[i].jg;
                t[i].bh=0;
            }
    for(int i=1;i<=n;i++)
        if(t[i].bh)
            for(int j=x;j>=t[i].jg;j--)
                f[j]=max(f[j],f[j-t[i].jg]+t[i].mw);
    printf("%d",f[x]+s);
    return 0;
}
时间: 2024-10-27 07:25:24

1025 选菜的相关文章

Codevs 1025 选菜

1025 选菜 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 在小松宿舍楼下的不远处,有PK大学最不错的一个食堂——The Farmer’s Canteen(NM食堂).由于该食堂的菜都很不错,价格也公道,所以很多人都喜欢来这边吃饭.The Farmer’s Canteen的点菜方式如同在超市自选商品一样,人们从一个指定的路口进去,再从一个指定的路口出来并付款.由于来这里就餐的人数比较多,所以人们自觉地在进入口的时候就排

CODEVS【1025】选菜

1025 选菜 时间限制: 1 s  空间限制: 128000 KB   题目等级 : 黄金 Gold 题目描述 Description 在小松宿舍楼下的不远处,有PK大学最不错的一个食堂——The Farmer’s Canteen(NM食堂).由于该食堂的菜都很不错,价格也公道,所以很多人都喜欢来这边吃饭.The Farmer’s Canteen的点菜方式如同在超市自选商品一样,人们从一个指定的路口进去,再从一个指定的路口出来并付款.由于来这里就餐的人数比较多,所以人们自觉地在进入口的时候就排

VUE新版扫码下单必选分类设置FAQ

使用场景:商家想要设置某些分类下的商品设置必选,否则不能下单.如某火锅店,商家想要设置汤底这个分类下的商品,顾客扫码下单的时候必须选择一份才能下单,此时 就可以使用这个功能 配置步骤和注意事项如下: 配置步骤(这里的分类以"主食"为例): 一.登录新商家中心("必选分类"这个功能配置仅在新商家中心支持,老版商家后台不支持) 1.商品管理--开台设置--开台分类--点击添加开台必选分类 2.分类下商品必选份数和选择分类配置: 如下图所示:我设置"分类下商品必

Android学习笔记(34):Android菜单

Android的菜单分为三种类型:选项菜单(Option Menu).上下文菜单(Context Menu).子菜单(Sub Menu). 选项菜单(Option Menu):按设备上的菜单按钮(Menu)会出现的菜单.不支持勾选标记. 上下文菜单(Context Menu):长按某个组件会出现的菜单.不支持菜单项图标. 子菜单(SubMenu):就是子菜单.不支持菜单项图标,不支持嵌套子菜单. Menu类用于添加菜单项和子菜单的方法是add()和addSubMenu(): MenuItem a

2015年春季开学前的感想

时间过的很快,又要开学了,明天是全体行政人员上班开会.在上班前总想写点东西,但是又不知道该写点啥,所以以下都是一些没啥逻辑的言语. 现在已经是2015年了,我2013年毕业,工作已经一年半了.现在回想一下,在这一年半中,自己在工作中确实有所成长,不论是工作能力还是为人处世,以及自己的世界观,都有所提升.工作后,被分到学校的总务处,干的是基建专干的工作,基建专干的工作范围是:学校的土建.装修.水电.校园安全巡查.各种报修的处理等,我还要负责学校校园安防监控.每个办公室的电话.学校的电梯维护等.才工

告诉你最健康的排毒早餐

水果+蔬菜+地瓜+米饭(1:2:1:1) 1.一种水果: 选果原则:以当地.当季.盛产之水果为原则,凡是进口水果与非当季之冷藏品均不宜. 2.二种蔬菜: 选菜原则:以根.茎.花.果四大类为主,凡是芽菜类与叶菜类暂时不宜. 根---红萝卜.白萝卜.山药.牛蒡等. 茎---西洋芹.明日叶等. 花---花椰菜(绿).包心菜等. 果---大小黄瓜.苦瓜.青椒.大蕃茄等. 3.地瓜(黄比红适合): 慢性病患吃两份,一般保健者吃一份,均要蒸后连皮食用(冬天可用烤的). 4,单机除尘器.糙米(或加小米.薏仁等

2015最新iOS学习线路图

iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础:iOS 内置的众多技术和功能让 Apple设备始终保持着遥遥领先的地位. iOS学习路线:http://www.mobiletrain.org/page/ios.html 课程分  类 课程模块 模块介绍 课程内容 Part1C语言 C语言和Objective-C语言 C语言 Mac系统及常用工具.进制:C数据

房上的猫:吃货联盟项目

一.首先先定义部分成员变量: String[] name = new String[4];// 订餐人 String[] greens = new String[4];// 储存菜品名称 String[] green = { "红烧带鱼", "鱼香肉丝", "时令鲜蔬" };// 菜品 int[] num = new int[4];// 份数 int[] time = new int[4];// 时间 String[] site = new St

Sprint2(12.6)

Sprint1第二阶段 1.类名:软件工程-第二阶段 方案一:此方案操作界面只有前台.厨房 (1)前台:用户到前台点餐,服务员操作界面,勾选客人所在桌号(不可重复勾选),并输入所选菜品,可增.删.改所点菜品,客人用餐完毕付账后,前台确认,释放该桌桌号,可进行新一轮勾选.界面包括:分类录入菜品名称.价格的页面:选择每桌菜品生成.结算出各桌订单页面:收款完成页面. (2)厨房:厨房可看见所点菜品,并在显示屏内标注已完成菜品.界面包括:修改菜品状态为已完成页面 方案二:此方案操作界面分为客户.前台.厨