【wikioi】1025 选菜
算法: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 选菜的更多相关文章
- Codevs 1025 选菜
题目描述 Description 在小松宿舍楼下的不远处,有PK大学最不错的一个食堂--The Farmer's Canteen(NM食堂).由于该食堂的菜都很不错,价格也公道,所以很多人都喜欢来这边 ...
- codevs 1025 选菜——01背包
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 在小松宿舍楼下的不远处,有PK大学最不错的一个食堂—— ...
- CODEVS【1025】选菜
1025 选菜 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 在小松宿舍楼下的不远处,有PK大学最不错的一个食堂——The ...
- VUE新版扫码下单必选分类设置FAQ
使用场景:商家想要设置某些分类下的商品设置必选,否则不能下单.如某火锅店,商家想要设置汤底这个分类下的商品,顾客扫码下单的时候必须选择一份才能下单,此时 就可以使用这个功能 配置步骤和注意事项如下: ...
- Sprint3总结和成员个人总结
Sprint3总结 一.类名:软件工程-第三阶段 二.时间:至12.18 三.选题内容:web版-餐厅到店点餐系统 四.(1)团队博客地址: http://www.cnblogs.com/queenj ...
- Sprint2(12.6)
Sprint1第二阶段 1.类名:软件工程-第二阶段 方案一:此方案操作界面只有前台.厨房 (1)前台:用户到前台点餐,服务员操作界面,勾选客人所在桌号(不可重复勾选),并输入所选菜品,可增.删.改所 ...
- Sprint1(第七天11.20)
Sprint1(11.20) Sprint1第一阶段 1.类名:软件工程-第一阶段 2.时间:11.14-11.23 3.选题内容:web版-餐厅到店点餐系统 4.我们详细分析了点餐系统实现的具体 ...
- Sprint3(12.18)总结
Sprint3第三阶段 1.类名:软件工程-第三阶段 2.时间:至12.18 3.选题内容:web版-餐厅到店点餐系统 4.团队博客地址: http://www.cnblogs.com/queenju ...
- Swift 3 迁移工作总结
写在前面 Swift 3.0 正式版发布了差不多快一个月了,断断续续的把手上和 Swift 相关的迁移到了Swift 3.0.所以写点小总结. 背景 代码量(4万行) 首先,我是今年年初才开始入手 S ...
随机推荐
- Android bluetooth用户自定义数据
default mac: [btif_core.c] btif_fetch_local_bdaddr() default device name: [btif_dm.c] btif_get_defau ...
- C# 一些常用的技巧代码
1.字符串风格成字符数组: 比如将字符串:23$123$45$转换成int[]这样的数组,你该怎么转换?其实你不用写那么的for循环,只需要一句话: int [] Relst =Array.Conve ...
- js继承的概念
js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现继承,可以用js ...
- App界面交互设计规范
策划007-App界面交互设计规范 字数1805 阅读3544 评论20 喜欢154 交互设计规范 在上篇<策划006-APP界面设计风格>确定下来后,产品经理(兼交互设计)还不用着急将所 ...
- 十天来学习java的心得体会
有关学习java是几天来的心得体会: 十天学习java遇到很多问题,每个问题都是经过反复的看书本以及上网查找资料来解决的,发现这一点真的需要自己来而不是去遇到什么问题就去依靠他人(师兄.同学).在其中 ...
- c++ shared_ptr 使用注意事项. 2
1.抛弃临时对象,让所有的智能指针都有名字. 2.类向外传递 this 的 shared_ptr 让类继承 enable_shared_from_this. 然后返回 shared_from_ ...
- 【java基础】内存分析
在上次我们说的<重载与重写>呢,我们遗留了一个问题,就是运行结果的各异性,那今天,我们就来探究一下 内存里的天地. 首先呢,我们把mian ...
- 使用while代替for循环的几个习题
1:兔子问题 2:100以内质数的和 3:单位给发了一张150元购物卡,拿着到超市买三类洗化用品.洗发水15元,香皂2元,牙刷5元.求刚好花完150元,有多少种买法,没种买法都是各买几样? 总结:wh ...
- 【前台 ajax】web项目前台传递数组给后台 两种方式
项目使用maven springMVC 有需求 将前台的数组 在ajax中 送给后台 方式1: 前台代码:[注意:ajax中的属性---traditional:true, ] 如果Post ...
- 廖雪峰js教程笔记8 date对象介绍和处理
在JavaScript中,Date对象用来表示日期和时间. 要获取系统当前时间,用: var now = new Date(); now; // Wed Jun 24 2015 19:49:22 GM ...