【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 ...
随机推荐
- 重温WCF之一个服务实现多个契约(二)
public class ServiceImp : IService1,IService2,IService3 { public string SayHelloA() { return "你 ...
- 【翻译六】java-连接和实例
Joins The join method allows one thread to wait for the completion of another. If t is a Thread obje ...
- Win10 UAP 绑定
Compiled DataBinding in Windows Universal Applications (UAP) http://nicksnettravels.builttoroam.com/ ...
- hdu 5294 最短路+最大流 ***
处理处最短路径图,这个比较巧妙 链接:点我
- [SVN] SVN在Eclipse里的各个状态解释
中文意义: A代表添加D代表删除U代表更新C代表合并,并且合并中有冲突G代表合并,合并中没有冲突 每个字母代表的意义: U = item (U)pdated to repository version ...
- 跟着鸟哥学Linux系列笔记3-第11章BASH学习
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 跟着鸟哥学Linux系列笔记2-第10章VIM学习 认识与学习bash 1. ...
- HDU 5900 QSC and Master 区间DP
QSC and Master Problem Description Every school has some legends, Northeastern University is the s ...
- Open judge C16H:Magical Balls 快速幂+逆元
C16H:Magical Balls 总时间限制: 1000ms 内存限制: 262144kB 描述 Wenwen has a magical ball. When put on an infin ...
- json对象的解析
json对象数据: { "status": "200", "code": "", "msg": &q ...
- 【spring bean】 spring中bean之间的引用以及内部bean
在spring中会有如下的几种情况: 1.在当前容器中,(即在spring.xml这一个配置文件中),一个bean引用了另一个bean. 使用 1> <ref bean="另 ...