博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CODE[VS] 1025 选菜 【背包】
阅读量:4028 次
发布时间:2019-05-24

本文共 2023 字,大约阅读时间需要 6 分钟。

题面:

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

小松发现,这种选菜方式意味着,他不能在选菜的时候离开队伍去拿一些他已经看过了的菜或者没有看过的菜,因为插队是不礼貌的,也是被BS的。
每个菜有一个价值,而小松也自己给每个菜定了一个在他看来的美味价值,例如红烧小黄鱼在小松看来是美味价值很高的,而花菜在小松眼里则是美味价值极低的菜肴。而有一些菜是营养价值极其高的菜(例如米饭),所以无论它的美味价值是多少,小松都会选择1份。现在小松带了X元钱来食堂就餐,他想知道,在不欠帐的情况下,他选菜的美味价值总合最大是多少。

输入描述 Input Description

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

输出描述 Output Description

请将结果输出到输出文件farmer.out中。输出包含一个整数,表示小松能选到的菜的美味价值总和最大是多少。
注:你可以假设数据中不会出现小松带的钱不够买必买菜的情况。

大致思路:

创建两组数组,一组读入时用。另一组在知道编号之后,把相应的数据放到对应编号的数组里,并进行标记,方便处理。

同时将价钱*10,方便变成下标,进行处理。
剩下的就是标注的背包问题了。

代码:

#include
#include
using namespace std;const int maxn=110;int vis[maxn]={
0},a1[maxn],a2[maxn],b1[maxn],b2[maxn],kind[maxn];int dp[maxn*10]={
0};//vis是标记数组,dp数组大小记得乘10int main(){ int n,k,x2; double x1,a_1; while(cin>>n>>k>>x1) { x2=(int)(x1*10); int ans=0; for(int i=1;i<=n;++i){ cin>>a_1; a1[i]=(int)(a_1*10); } for(int i=1;i<=n;++i) cin>>b1[i]; for(int i=1;i<=n;++i){ cin>>kind[i];//对另一组数组进行赋值 vis[kind[i]]=1; a2[kind[i]]=a1[i]; b2[kind[i]]=b1[i]; } for(int i=1;i<=k;++i){ int m; cin>>m; vis[m]=0;//选过的和不选的都标记为0 ans+=b2[m]; x2-=a2[m]; } for(int i=1;i<=n;++i){ if(vis[i]){ for(int j=x2;j>=a2[i];--j) dp[j]=max(dp[j-a2[i]]+b2[i],dp[j]);//标准01背包 } } cout<
<

转载地址:http://jdobi.baihongyu.com/

你可能感兴趣的文章
JMeter 保持sessionId
查看>>
IDEA Properties中文unicode转码问题
查看>>
Idea下安装Lombok插件
查看>>
zookeeper
查看>>
Idea导入的工程看不到src等代码
查看>>
技术栈
查看>>
Jenkins中shell-script执行报错sh: line 2: npm: command not found
查看>>
8.X版本的node打包时,gulp命令报错 require.extensions.hasownproperty
查看>>
Jenkins 启动命令
查看>>
Maven项目版本继承 – 我必须指定父版本?
查看>>
Maven跳过单元测试的两种方式
查看>>
通过C++反射实现C++与任意脚本(lua、js等)的交互(二)
查看>>
利用清华镜像站解决pip超时问题
查看>>
[leetcode BY python]1两数之和
查看>>
微信小程序开发全线记录
查看>>
Centos import torchvision 出现 No module named ‘_lzma‘
查看>>
网页设计里的浮动 属性
查看>>
Maximum Subsequence Sum
查看>>
PTA:一元多项式的加乘运算
查看>>
CCF 分蛋糕
查看>>