第四届西安邮电大学acm-icpc校赛 流浪西邮之寻找火石碎片 多体积条件背包
题目描述
现在你有v1块钱,v2积分,能免费(免积分)收集k个火石碎片,现在总共有n个火石碎片,每个碎片需要的钱a或者积分b,碎片的能量为val。我们希望收集火石碎片,使能量的总和尽可能大,问你skyer_hxx最多可以拿到能量总和的最大值是多少?
输入
每组数据的第一行是四个整数n,v1,v2,k;
然后是n行,每行三个整数a,b,val,分别表示每个碎片的价钱,兑换所需积分,所含能量。
1≤n≤100
0≤v1,v2≤100
0≤k≤5
0≤a,b,val≤100
输出
样例输入
4 5 2 1
2 2 4
4 5 1
4 2 4
2 2 5
样例输出
14
提示
只要钱或者积分满足购买一个碎片的要求,那么就可以买下这个碎片。
可以看出这是个多条件的背包问题,但处理方法跟一维差不多,现在两个条件就开2维,问题就是在于还可以免费拿k个,一开始想当然的以为就是那价值最大的那k个,其实不然,也可能的是价值小,但是条件很大的,所以还得再开个第三维。
也就是dp[i][j][k]表示的是有i块钱j积分免费拿k个的情况下能得到的最大价值。
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=;
struct Node{
int a,b,val;
}w[N];
int dp[N][N][];
int main()
{
int n,v1,v2,kk;
while(~scanf("%d%d%d%d",&n,&v1,&v2,&kk)){
for(int i=;i<n;i++)
scanf("%d%d%d",&w[i].a,&w[i].b,&w[i].val);
for(int i=;i<=v1;i++)
for(int j=;j<=v2;j++)
for(int k=;k<=kk;k++)
dp[i][j][k]=;
for(int i=;i<n;i++)
for(int l=kk;l>=;l--)
for(int j=v1;j>=;j--)
for(int k=v2;k>=;k--){
if(l>=)
dp[j][k][l]=max(dp[j][k][l],dp[j][k][l-]+w[i].val);
if(j>=w[i].a)
dp[j][k][l]=max(dp[j][k][l],dp[j-w[i].a][k][l]+w[i].val);
if(k>=w[i].b)
dp[j][k][l]=max(dp[j][k][l],dp[j][k-w[i].b][l]+w[i].val);
}
printf("%d\n",dp[v1][v2][kk]);
}
return ;
}
多条件呀
第四届西安邮电大学acm-icpc校赛 流浪西邮之寻找火石碎片 多体积条件背包的更多相关文章
- 第四届西安邮电大学acm-icpc校赛 猜球球
题目描述 六一到了,为了庆祝这个节日,好多商家都推出了很多好玩的小游戏.Tongtong看到了一个猜球球的游戏,有n种除了颜色之外完全相同的球,商家从中拿出来一个球球放到了箱子里,已知第i种颜色的球出 ...
- 第四届西安邮电大学acm-icpc校赛 热狗树
题目描述 “我是番茄酱!”“我是黄芥末酱!”“合在一起就是——美式热狗上加的,那个!“热狗树上的每个节点都涂有番茄酱或者黄芥末酱中的一种,这样热狗树就变得美味了~LiMn2O4构造了一颗热狗树,他想 ...
- 2018牛客网暑期ACM多校训练营(第三场) A - PACM Team - [四维01背包][四约束01背包]
题目链接:https://www.nowcoder.com/acm/contest/141/A 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K ...
- 北方大学 ACM 多校训练赛 第七场 C Castle(LCA)
[题意]给你N个点,N条不同的边,Q次询问,求出u,v之间的最短路. [分析]题意很简单,就是求最短路,但是Q次啊,暴力DIJ?当然不行,观察到这个题边的数目和点的数目是相同的,也就是说这个图是由一棵 ...
- 近几年ACM/ICPC区域赛铜牌题
2013 changsha zoj 3726 3728 3736 3735 2013 chengdu hud 4786 4788 4790 2013 hangzhou hdu 4770 4771 47 ...
- 2016 ACM/ICPC 区域赛(北京) E 题 bfs
https://vjudge.net/problem/UVALive-7672 题意 输入一个五位数n 问由12345变到n的操作最少次数 不可达输出-1 有三种操作 1.交换相邻的位置 次数不 ...
- 2014哈商大ICPC/ACM校赛解题报告
被debug邀请去參加校赛,哎,被虐..我对不起工大.. 由于本人不搞ACM,算法处于HelloWorld水准.. 虽然题目除了鸟不拉屎星人之外都非常水,但我能做到这个程度,全然是超水平发挥了.. 数 ...
- 优客源创会 西安站 西邮Linux兴趣小组
2016年5月19日晚7:00,优客源创会西安站在西安邮电大学长安校区东区教学楼FF305如期举行,西安邮电大学计算机学院教授.西邮Linux兴趣小组指导老师陈莉君.王小银老师和来自开源中国的周凯先生 ...
- 2015 ACM / ICPC 亚洲区域赛总结(长春站&北京站)
队名:Unlimited Code Works(无尽编码) 队员:Wu.Wang.Zhou 先说一下队伍:Wu是大三学长:Wang高中noip省一:我最渣,去年来大学开始学的a+b,参加今年区域赛之 ...
随机推荐
- HDU - 2196(树形DP)
题目: A school bought the first computer some time ago(so this computer's id is 1). During the recent ...
- vscode+php+xdebug won't stop at breakpoint 断点不起作用
not stopping on breakpoints breakpoint not working 原因: 1) php.ini xdebug 端口不配置的情况下,默认是 9000,如果vscode ...
- PHP后台开发小经验
js页面传参数 js的参数传输是关键,尤其是当一个页面的数据需要分步骤上传时. 同样的删除功能,不会操作批量删除时可以尝试单个删除,功能差不多,实现功能的方法也千千万,先做成它是第一位. 主页面很多条 ...
- python中sort和sorted用法的区别
Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列 一,最简单的排序 1.使用sort排序 my_list = [3 ...
- margin:0 auto;生效条件
1.position:absolute下不生效 原因:position:absolute只能相对于父元素进行定位top.left定位,相当于浮在父元素上面,所以margin:0 auto;就没有了参考 ...
- C# 使用Emit实现动态AOP框架 (三)
目 录 C# 使用Emit实现动态AOP框架 (一) C# 使用Emit实现动态AOP框架 (二) C# 使用Emit实现动态AOP框架 (三) C# 使用Emit实现动态AOP框架 进阶篇之异常处 ...
- 在realm中动态查询用户的权限&角色
@Controller @Scope("prototype") @Namespace("/") @ParentPackage("struts-defa ...
- react portals 插槽 实现简易弹窗
Portal 提供了一种将子节点渲染到存在于父节点以外的DOM节点的优秀方案: 尽管 portal 可以被放置在 DOM 树中的任何地方,但在任何其他方面,其行为和普通的 React 子节点行为一致. ...
- docker 第四篇 网络
安装docker以后自动添加三种网络方式 bridge: 表示桥接网络 (在本地自动创建一个软交换机) host: 表示让容器使用宿主机的网络名称空间 none: 表示没有网络 不能执行网络通信. 创 ...
- Oracle问题总结
1.账号锁定了 2.忘记密码 3.Oracle create session权利 4.oracle中单引号和双引号的作用 5.不支持 insert into tableName values (... ...