HDU 3033 I love sneakers! (分组背包变形)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MID(x,y) ((x+y)>>1)
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;typedef long long LL;
const int sup = 0x7fffffff;
const int inf = -0x7fffffff;struct shoes{int price;int value;
};
vector s[11];int f[15][10100];
int N, M, K;int main(){while(scanf("%d %d %d", &N, &M, &K) != EOF){for (int i = 0; i < 11; i ++)s[i].clear();for (int i = 1; i <= N; i ++){int tmp_brand, tmp_price, tmp_value;scanf("%d %d %d", &tmp_brand, &tmp_price, &tmp_value);shoes tmp;tmp.price = tmp_price;tmp.value = tmp_value;s[tmp_brand].push_back(tmp);}mem(f, -1);f[0][0] = 0;for (int k = 1; k <= K; k ++)for (int j = 0; j < (int)s[k].size(); j ++)for (int v = M; v >= 0; v --){if (v-s[k][j].price >= 0 && f[k][v-s[k][j].price] != -1){f[k][v] = max(f[k][v], f[k][v-s[k][j].price]+s[k][j].value);}if (v-s[k][j].price >= 0 && f[k-1][v-s[k][j].price] != -1){f[k][v] = max(f[k][v], f[k-1][v-s[k][j].price]+s[k][j].value);}}int res = -1;for (int v = 0; v <= M; v ++)if (f[K][v] > res)res = f[K][v];if (res >= 0)printf("%d\n", res);elseprintf("Impossible\n");}return 0;
}
转载于:https://www.cnblogs.com/AbandonZHANG/archive/2013/03/20/4114229.html
HDU 3033 I love sneakers! (分组背包变形)相关推荐
- hdu 5148 树形dp,分组背包
题目: 题目分析: 状态方程: dp[当前节点的标号][当前已经选取的城市数] 设已经选取的城市数是K 初始状态: dp[u][0] = dp[u][1] = 0 , 其他的将值设置为无穷大 树形转移 ...
- 暑假N天乐 —— 多重+分组背包及变形
[HDU-1114 Piggy-Bank] 完全背包裸题 http://acm.hdu.edu.cn/showproblem.php?pid=1114 一道迷路的完全背包跑到了这里来...相当于给定背 ...
- hdu 3033(分组背包)
题意:有S款运动鞋,一个n件,总钱数为m,求不超过总钱数且每款鞋子至少买一双的情况下,使价值最大.如果 有一款买不到,就输出"Impossible". 解题思路:分组背包,和背包九 ...
- hdu3033(变形分组背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3033 题意:Iserlohn要买鞋,有k种牌子,每种牌子至少买一双鞋子.每双鞋子有标价跟实际价值.求用 ...
- hdu 1712(分组背包)
题意:有N个课程,然后选择M天内学习的效益最大值,注意每个课程最多选取一次. 解题思路:裸的分组背包,把每门课程看做是每一组,每一组里面最多选择一个天数,典型的分组背包.详见背包九讲 #include ...
- 分组背包----HDU1712 ACboy needs your help
很简单的一道分组背包入门问题.不多解释了. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring&g ...
- [bzoj1025][SCOI2009]游戏 (分组背包)
Description windy学会了一种游戏.对于1到N这N个数字,都有唯一 且不同的1到N的数字与之对应.最开始windy把数字按顺序1,2,3,--,N写一排在纸上.然后再在这一排下面写上它们 ...
- zcmu2165(分组背包)
2165: 黄金矿工 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 86 Solved: 41 [Submit][Status][Web Board ...
- 2019年湘潭大学程序设计竞赛(重现赛)补题:H.Chat(分组背包)
链接:https://ac.nowcoder.com/acm/problem/25581 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
最新文章
- XPath实例教程四、[]的作用
- ContrainedBox:设置尺寸
- 两表格合并_六个高效办公Excel小技巧,让你提前下班两小时!
- 用java实现etcd分布式锁_etcd分布式锁及事务
- android-pageviewer实现linearlayout的切换
- zip、rar文件格式
- HDU 5934:Bomb(强连通缩点)
- SQL Server 字符串拆分
- 基于python实现网络课程秒刷
- 计算机从加电到启动系统时主板的工作流程,企业网络管理员面试题
- PC微信逆向之发送消息
- Android Studio 微信登录
- 争对让望对思野葛对山栀注解_解析
- 半导体——本征半导体、杂质半导体、PN结
- HihoCoder - 1847
- 《软技能,代码之外的生存指南》--教你如何当一名程序员
- Vortex: 一种基于RISC-V指令集自定义扩展的开源GPGPU架构
- 时空大数据与众包计算学习总结
- 关于海康摄像头的摘要认证(转载)
- JavaWeb QQ邮箱找回密码