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 ...
随机推荐
- Photoshop技能167个经典的Photoshop技巧大全
Photoshop技能167个经典的Photoshop技巧大全 学PS基础:Photoshop 技能167个 经典的Photoshop技巧大全,如果你是初级阶段的水平,熟读此文并掌握,马上进阶为中级 ...
- thinkphp中的where()方法
where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询.表达式查询.快捷查询.区间查询.组合查询在内的查询操作.where方法 ...
- hdu 1150 Machine Schedule hdu 1151 Air Raid 匈牙利模版
//两道大水……哦不 两道结论题 结论:二部图的最小覆盖数=二部图的最大匹配数 有向图的最小覆盖数=节点数-二部图的最大匹配数 //hdu 1150 #include<cstdio> #i ...
- MyEclipse中新建JSP(Advanced Template)文件时自动生成的
<meta http-equiv="pragma" content="no-cache"> <meta http-equiv="ca ...
- 推荐一款JavaScript日历控件:kimsoft-jscalendar
一.什么是 kimsoft-jscalendar 一个简洁的avaScript日历控件,可在Java Web项目,.NET Web 项目中使用 二.kimsoft-jscalendar 有什么 ...
- Hive 4、Hive 的安装配置(远端MyMql模式)
1.remote一体 这种存储方式需要在远端服务器运行一个mysql服务器,并且需要在Hive服务器启动meta服务.这里用mysql的测试服务器,ip位192.168.1.214,新建hive_re ...
- hdu 5595 GTW likes math(暴力枚举查询)
思路:直接暴力枚举区间[l,r]的整数值,然后max和min就可以了. AC代码: #pragma comment(linker, "/STACK:1024000000,1024000000 ...
- asp.net中,我们使用ashx获取数据列表,在前端使用$.ajax()解析
一直在想在asp.net中怎么才能向在java中那样用struts那样做页面请求. 当然asp.net mvc就是类似struts的东西吧,不过还没来得及学习. 今天就用ashx来接收页面请求,并调用 ...
- jsp验证码页面笔记
首先在网上搜了下jsp生成验证码的代码,如下: package com.servlet; import java.awt.Color; import java.awt.Font; import jav ...
- Win8 App使用Listview的简单方法
这是Win8 App神圣不可侵犯的头文件: <head> <meta charset="utf-8"> <title>ListViewExamp ...