【HDU】I love sneakers!(分组背包)
看了许多的题解,都有题目翻译,很不错,以后我也这样写。直接翻译样例:
/*鞋子的数量N[1, 100]; 拥有的金钱M[1, 1w]; 品牌数目[1, 10]*/
/*以下四行是对于每双鞋的描述*/
/*品牌种类a; 标价b; 高兴程度增加量c*/ /*每一种品牌的鞋子最少买一双,求最大的高兴程度*/
很容易看出是分组背包的题型,trick是价格可能为0(居然有免费的),所以注意dp转移数组初始化-inf。
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cctype>
#include <cmath>
#include <algorithm>
#include <numeric>
#include <set>
using namespace std; //const int = INT_MIN;
int s[][], v[][], dp[][]; int main () {
ios :: sync_with_stdio(false);
int N, M, K, a, b, c;
while (cin >> N >> M >> K) {
int cur[] = {};
for (int i = ; i <= N; ++ i) {
cin >> a >> b >> c;
s[a][++ cur[a]] = b;
v[a][cur[a]] = c;
}
/*测试种类*/
/*
for (int i = 1; i <= N; ++ i) {
cout << i << " : " << cur[i] << endl;
}
*/ /*dp数组初始化*/
for (int i = ; i <= K; ++ i) {
for (int j = ; j <= M; ++ j) {
dp[i][j] = INT_MIN;
}
} for (int i = ; i <= K; ++ i) {
for (int j = ; j <= cur[i]; ++ j) {
for (int k = M; k >= s[i][j]; -- k) {
dp[i][k] = max (dp[i][k], max (dp[i][k - s[i][j]] + v[i][j], dp[i - ][k - s[i][j]] + v[i][j]) );
}
}
} //cout << dp[K][M] << endl;
if (dp[K][M] < ) {
cout << "Impossible" << endl;
} else {
cout << dp[K][M] << endl;
}
}
return ;
}
【HDU】I love sneakers!(分组背包)的更多相关文章
- hdu 3033 I love sneakers! 分组背包
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu 3033 I love sneakers!(分组背包+每组至少选一个)
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- I love sneakers!(分组背包HDU3033)
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU3033I love sneakers!(分组背包)
http://acm.hdu.edu.cn/showproblem.php?pid=3033 本题的意思就是说现在有n种牌子的鞋子,每种品牌有一些不同的鞋,每双鞋子都有一个特定的权值,现在要求每种品牌 ...
- hdu3033 I love sneakers! 分组背包变形
分组背包要求每一组里面只能选一个,这个题目要求每一组里面至少选一个物品. dp[i, j] 表示前 i 组里面在每组至少放进一个物品的情况下,当花费 j 的时候,所得到的的最大价值.这个状态可以由三个 ...
- hdu 1561 树形dp+分组背包
题意:就是给定n个点,每个地点有value[i]的宝物,而且有的宝物必须是另一个宝物取了才能取,问取m个点可以获得的最多宝物价值. 一个子节点就可以返回m个状态,每个状态表示容量为j(j<=m) ...
- hdu3033 I love sneakers! 分组背包变形(详解)
这个题很怪,一开始没仔细读题,写了个简单的分组背包交上去,果不其然WA. 题目分析: 分组背包问题是这样描述的:有K组物品,每组 i 个,费用分别为Ci ,价值为Vi,每组物品是互斥的,只能取一个或者 ...
- hdu 3033(好题,分组背包)
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HD3033I love sneakers!(分组背包+不懂)
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu3033I love sneakers! (分组背包,错了很多次)
Problem Description After months of hard working, Iserlohn finally wins awesome amount of scholarshi ...
随机推荐
- Linux下的bc计算器
bc = basic calculator scale:设置精度,默认为0 obase:设置输出进制,默认为10 ibase:设置输入进制,默认为10 原文:http://www.linuxidc.c ...
- Sublime Text2 按shift键选择不了的问题
记录下来,免得以后忘了: 今天在Sublime Text 2装了一个ThinkPHP插件之后.发现按shift键+鼠标左键选择不了内容了.原因是ThinkPHP里的热键与系统的有冲突了,须要设置例如以 ...
- HTML, CSS学习笔记(完整版)
第一章 div布局 前几课内容 .htm是早期的后缀.由于那时仅仅能支持长度为3的后缀.因此html与htm是一样的. shtml是server先处理然后再交给浏览器处理 #HTML小知识#之#XHT ...
- [Angular 2] Transclusion in Angular 2
Link: Blog Single transclude: <ng-content></ng-content> Multi-translcude: <ng-content ...
- 设计模式2----建造者模式(builder pattern)
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 类型:创建类模式 类图: UML图 四个要素 Builder: 抽象建造者ConcreteBuilder: 具体建造者 ...
- Eclipse Removing obsolete files from server 问题
今天在修改server.xml调试程序时,遇到下面这个问题,clean,重启都不好使. Removing obsolete files from server.. ...
- 根据id查询数据(向前台返回json格式的数据)
/** *@description 根据主键查询Bean */ @RequestMapping(value="/getBean/{getId}") public void getB ...
- eclipse与github建立版本关联、git使用说明
1.在eclipse下建一个project :aa 2.打开git bush,进入aa目录下:cd /d/MyWorkspace/aa 3.git init 4.git add -A 5.git co ...
- [MVC4-基礎] 從資料庫取值顯示在DropDownList中
剛開始學MVC4,以下是一些基礎的學習筆記! 完成效果像下面這樣,資料來源是既有的Database. 1.Controller public ActionResult Index() { SqlCon ...
- OpenSuse下编译MonoDevelop
当访问Monodevelop.com官网下载的安装包,安装后,发现并不是最新版.在OpenSuse下载的是3.0版本.根据官网的指示,可以自己下载源码进行编译.按官网的指引: 1. $ git clo ...