题目链接

算法:01背包DP

此题主要是预处理恶心。我提交了2次。。。第一次数组开小了。。。(体积要=V*10)

注意:

钱做为体积,美味价值作为价值

注意,因为体积(钱)是小数点后1位,故数组下标无法表示体积(01背包),所以体积(钱)要扩大10倍作为01背包的体积
还有因为有重复的,所以要去重再01

代码:

#include <iostream>
#include <algorithm>
using namespace std;
//钱做为体积,美味价值作为价值
//注意,因为体积(钱)是小数点后1位,故数组下标无法表示体积(01背包)。所以要扩大10倍,输出答案再缩小10倍
//还有因为有重复的,所以要去重再01
const int MAXN = 105;
int t[MAXN], n, k, V; //t代表种类
int v1[MAXN], w1[MAXN]; //v1代表价格(体积),w1代表美味价值(价值)(去重前)
int v[MAXN], w[MAXN], nn = 0; //v代表价格(体积),w代表美味价值(价值)
int f[MAXN*10];
bool m[MAXN]; //m[i]表示第i种是否被购买
int ans = 0; int main()
{
int i, j;
double temp;
int tem;
cin >> n >> k >> temp;
V=(int)(temp*10);
for(i = 1; i <= n; i++) {cin >> temp; v1[i] = (int)(temp*10);}
for(i = 1; i <= n; i++) cin >> w1[i];
for(i = 1; i <= n; i++) cin >> t[i];
for(i = 1; i <= k; i++)
{
cin >> tem;
m[tem] = 1; //必买种类已经用过的标志
for(j = 1; j <= n; j++) //先处理必须买的
if(tem == t[i])
{
ans += w1[i];
V -= v1[i]; //必须买的后减小体积
break;
}
}
//题目说数据中不会出现小松带的钱不够买必买菜的情况,所以不用判断买完必要的后钱不够的情况
if(V == 0) {cout << ans << endl;return 0;}
for(i = 1; i <= n; i++)
if(!m[t[i]]) //这种种类没有访问过
w[++nn]=w1[i], v[nn]=v1[i], m[t[i]]=1;
//01背包
for(i = 1; i <= nn; i++)
for(j = V; j >= v[i]; j--)
f[j] = max(f[j], f[j-v[i]]+w[i]);
cout << ans+f[V] << endl;
return 0;
}

【wikioi】1025 选菜的更多相关文章

  1. Codevs 1025 选菜

    题目描述 Description 在小松宿舍楼下的不远处,有PK大学最不错的一个食堂--The Farmer's Canteen(NM食堂).由于该食堂的菜都很不错,价格也公道,所以很多人都喜欢来这边 ...

  2. codevs 1025 选菜——01背包

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 在小松宿舍楼下的不远处,有PK大学最不错的一个食堂—— ...

  3. CODEVS【1025】选菜

    1025 选菜  时间限制: 1 s  空间限制: 128000 KB   题目等级 : 黄金 Gold 题目描述 Description 在小松宿舍楼下的不远处,有PK大学最不错的一个食堂——The ...

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

    使用场景:商家想要设置某些分类下的商品设置必选,否则不能下单.如某火锅店,商家想要设置汤底这个分类下的商品,顾客扫码下单的时候必须选择一份才能下单,此时 就可以使用这个功能 配置步骤和注意事项如下: ...

  5. Sprint3总结和成员个人总结

    Sprint3总结 一.类名:软件工程-第三阶段 二.时间:至12.18 三.选题内容:web版-餐厅到店点餐系统 四.(1)团队博客地址: http://www.cnblogs.com/queenj ...

  6. Sprint2(12.6)

    Sprint1第二阶段 1.类名:软件工程-第二阶段 方案一:此方案操作界面只有前台.厨房 (1)前台:用户到前台点餐,服务员操作界面,勾选客人所在桌号(不可重复勾选),并输入所选菜品,可增.删.改所 ...

  7. Sprint1(第七天11.20)

    Sprint1(11.20)   Sprint1第一阶段 1.类名:软件工程-第一阶段 2.时间:11.14-11.23 3.选题内容:web版-餐厅到店点餐系统 4.我们详细分析了点餐系统实现的具体 ...

  8. Sprint3(12.18)总结

    Sprint3第三阶段 1.类名:软件工程-第三阶段 2.时间:至12.18 3.选题内容:web版-餐厅到店点餐系统 4.团队博客地址: http://www.cnblogs.com/queenju ...

  9. Swift 3 迁移工作总结

    写在前面 Swift 3.0 正式版发布了差不多快一个月了,断断续续的把手上和 Swift 相关的迁移到了Swift 3.0.所以写点小总结. 背景 代码量(4万行) 首先,我是今年年初才开始入手 S ...

随机推荐

  1. 【Bugly干货分享】手把手教你逆向分析 Android 程序

    很多人写文章,喜欢把什么行业现状啊,研究现状啊什么的写了一大通,感觉好像在写毕业论文似的,我这不废话,先直接上几个图,感受一下. 第一张图是在把代码注入到地图里面,启动首页的时候弹出个浮窗,下载网络的 ...

  2. ABAP DESCRIBE语句

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. Linux系统木马后门查杀方法详解

    木马和后门的查杀是系统管理员一项长期需要坚持的工作,切不可掉以轻心.以下从几个方面在说明Linux系统环境安排配置防范和木马后门查杀的方法: 一.Web Server(以Nginx为例) 1.为防止跨 ...

  4. C# Windows Service服务的创建和调试

    前言 关于Windows服务创建和调试的文章在网络上的很多文章里面都有,直接拿过来贴在这里也不过仅仅是个记录,不会让人加深印象.所以本着能够更深刻了解服务项目的创建和调试过程及方法的目的,有了这篇记录 ...

  5. 使用iframe调用指定网页的特定位置(显示目标网页某区域的我想要的内容)

    使用iframe调用指定网页的特定位置(显示目标网页某区域的我想要的内容) 有些时候我们并不需要显示iframe标签属性src指定的目标网页的所有内容,往往只需要显示某一特定区域.现有两种实现方法提供 ...

  6. UVA 10003 Cutting Sticks 切木棍 dp

    题意:把一根木棍按给定的n个点切下去,每次切的花费为切的那段木棍的长度,求最小花费. 这题出在dp入门这边,但是我看完题后有强烈的既是感,这不是以前做过的石子合并的题目变形吗? 题目其实就是把n+1根 ...

  7. android小知识之意图(intent)

    android中的意图有显示意图和隐式意图两种, 显示意图要求必须知道被激活组件的包和class 隐式意图只需要知道跳转activity的动作和数据,就可以激活对应的组件 A 主activity  B ...

  8. linq中日期格式转换或者比较,程序报错说不支持方法的解决办法

    public void TestMethod1(){using (var _context = new hotelEntities()){var rq = DateTime.Now.Date;var ...

  9. Android双击退出

    重写返回键 private long tempTime = 0; /** * 双击退出 */ @Override public void onBackPressed() { long firstCli ...

  10. sql server 临时库文件太大 迁移tempdb数据库

    由于装SQL Server时默认装在系统盘,使用一段时间后,tempdb数据库占了68G,导致整个C盘爆满,彻底解决办法就是迁移tempdb物理文件,移至其他大空间磁盘上. 将 tempdb 从其在磁 ...