HDU 2602 Bone Collector - from lanshui_Yang
#include <iostream>
#include<cstring>
#include<algorithm>
#include<string>
#include<cmath>
#include<cstdio>
using namespace std;
const int MAXN = 1111 ;
int n , V ;
int w[MAXN] ; // 物品的价值
int v[MAXN] ; // 物品自身的体积
int f[MAXN][MAXN] ;
bool vis[MAXN][MAXN] ;
int f2[MAXN] ;
void init()
{
scanf("%d%d" , &n , &V) ;
int i ;
for(i = 1 ; i <= n ; i ++)
{
scanf("%d" , &w[i]) ;
}
for(i = 1 ; i <= n ; i ++)
{
scanf("%d" , &v[i]) ;
}
}
void solve1() // 普通解法
{
int i , j ;
for(j = 0 ; j <= V ; j ++)
{
f[0][j] = 0 ;
}
for(i = 1 ; i <= n ; i ++)
{
for(j = 0 ; j <= V ; j ++)
{
f[i][j] = f[i - 1][j] ;
if(j >= v[i])
f[i][j] = max(f[i - 1][j] , f[i - 1][j - v[i]] + w[i]) ;
}
}
printf("%d\n" , f[n][V]) ;
}
void solve2() // 滚动数组解法
{
memset(f2 , 0 , sizeof(f2)) ;
int i , j ;
for(i = 1 ; i <= n ; i ++)
{
for(j = V ; j >= 0 ; j --)
{
if(j >= v[i])
f2[j] = max(f2[j] , f2[ j - v[i] ] + w[i]) ;
}
}
printf("%d\n" , f2[V]) ;
}
int dp(int i , int j)
{
int& ans = f[i][j] ;
if(vis[i][j])
return f[i][j] ;
if(i == 0)
ans == 0 ;
else
{
ans = dp(i - 1 , j) ;
if(j >= v[i])
ans = max(dp(i - 1 , j) , dp(i - 1 , j - v[i]) + w[i] ) ;
}
vis[i][j] = true ;
return ans ;
}
void solve3() // 用记忆化搜索(memoization)求解,完全按照状态转移方程来写,较易理解。
{
memset(vis , 0 , sizeof(vis)) ; // 初始化标记数组
printf("%d\n" , dp(n , V)) ; }
int main()
{
int T ;
scanf("%d" , &T) ;
while (T --)
{
init() ;
solve1() ;
solve2() ;
//solve3() ;
}
return 0 ;
}
HDU 2602 Bone Collector - from lanshui_Yang的更多相关文章
- HDU 2602 Bone Collector 0/1背包
题目链接:pid=2602">HDU 2602 Bone Collector Bone Collector Time Limit: 2000/1000 MS (Java/Others) ...
- HDOJ(HDU).2602 Bone Collector (DP 01背包)
HDOJ(HDU).2602 Bone Collector (DP 01背包) 题意分析 01背包的裸题 #include <iostream> #include <cstdio&g ...
- hdu 2602 Bone Collector(01背包)模板
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 Bone Collector Time Limit: 2000/1000 MS (Java/Ot ...
- HDU 2602 Bone Collector
http://acm.hdu.edu.cn/showproblem.php?pid=2602 Bone Collector Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 2602 Bone Collector(经典01背包问题)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2602 Bone Collector Time Limit: 2000/1000 MS (Java/O ...
- HDU 2602 Bone Collector (简单01背包)
Bone Collector http://acm.hdu.edu.cn/showproblem.php?pid=2602 Problem Description Many years ago , i ...
- hdu 2602 Bone Collector 背包入门题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 题目分析:0-1背包 注意dp数组的清空, 二维转化为一维后的公式变化 /*Bone Coll ...
- HDU 2602 Bone Collector(01背包裸题)
Bone Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- HDU 2602 - Bone Collector - [01背包模板题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 Many years ago , in Teddy’s hometown there was a ...
随机推荐
- Qt creator error: LNK1123: 转换到 COFF 期间失败: 文件无效或损坏(vs2010的嵌入式清单文件)
下面是vs2010导入别人文件时出现的问题的解决方案:VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属 ...
- 在WPF中自定义你的绘制(三)
原文:在WPF中自定义你的绘制(三) 在WPF中自定义你的绘制(三) ...
- 切图教程,APP切图实例
- 全选demo
我们处理数据时,最好能够支持全选操作. 选中之后,进行删除,或其他处理. 我自己写了一个demo. 主要功能: 1.点击全部选中 2.点击全部取消 3.然后进行获取选中的id,进行处理 代码如下: & ...
- .NET设计模式系列文章
原文地址:http://terrylee.cnblogs.com/archive/2006/06/01/334911.html 最初写探索设计模式系列的时候,我只是想把它作为自己学习设计模式的读书笔记 ...
- hdu 1754 I Hate It_线段树
题意:略 思路:套hdu1166模版改改就行了,要注意的是,网上有的代码是错的,还贴出来... #include <iostream> #include<cstdio> #in ...
- poj 2531 Network Saboteur(经典dfs)
题目大意:有n个点,把这些点分别放到两个集合里,在两个集合的每个点之间都会有权值,求可能形成的最大权值. 思路:1.把这两个集合标记为0和1,先默认所有点都在集合0里. 2 ...
- Unity 利用NGUI2.6.3做技能冷却的CD效果
NGUI非常强大我们今天来学习一下,如何利用NGUI做技能冷却的CD效果.先导入NGUI的插件.没有的话这里有啊NGUI2.6.3下载地址: http://vdisk.weibo.com/s/KLqn ...
- 优先队列(priorityqueue)
队列是先进先出的线性表,顾名思义,优先队列则是元素有优先级的队列,出列的顺序由元素的优先级决定.从优先队列中删除元素是根据优先权的高低次序,而不是元素进入队列的次序.优先队列的典型应用是机器调度等. ...
- maven02 命令