hdu4501——小明系列故事——买年货(多维背包)
题解:
思路:将v1,v2,k都当作一种体积,开三维dp数组,每种物品只能取一次
代码中的for循环是倒着进行的,知道01背包和完全背包的肯定明白,倒着进行的就代表每种物品只选择一次
代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 using namespace std;
6 const int maxn=105;
7 const int INF=0x3f3f3f3f;
8 int dp[maxn][maxn][6];
9 struct shudui
10 {
11 int a,b,val;
12 } m[maxn];
13 int main()
14 {
15 int n,v1,v2,k1;
16 while(~scanf("%d%d%d%d",&n,&v1,&v2,&k1))
17 {
18 for(int i=1; i<=n; ++i)
19 {
20 scanf("%d%d%d",&m[i].a,&m[i].b,&m[i].val);
21 }
22 memset(dp,0,sizeof(dp));
23 for(int l=1; l<=n; ++l)
24 {
25 for(int i=v1; i>=0; --i)
26 {
27 for(int j=v2; j>=0; --j)
28 {
29 for(int k=k1; k>=0; --k)
30 {
31 int temp=0;
32 if(i-m[l].a>=0)
33 temp=max(temp,dp[i-m[l].a][j][k]+m[l].val);
34 if(j-m[l].b>=0)
35 temp=max(temp,dp[i][j-m[l].b][k]+m[l].val);
36 if(k>0)
37 temp=max(temp,dp[i][j][k-1]+m[l].val);
38 dp[i][j][k]=max(dp[i][j][k],temp);
39 }
40 }
41 }
42 }
43 printf("%d\n",dp[v1][v2][k1]);
44 }
45 return 0;
46 }
其实感觉多维背包也是一种套路,主要是找到dp的维度
hdu4501——小明系列故事——买年货(多维背包)的更多相关文章
- HDUOJ----4501小明系列故事——买年货(三维背包)
小明系列故事——买年货 Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- hdoj--4501--小明系列故事——买年货(三维背包)
小明系列故事--买年货 Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Tota ...
- hdu 4501 小明系列故事——买年货_二维背包
题目:你可以有v1元,v2代金券,v3个物品免单,现在有n个商品,商品能用纸币或者代金券购买,当然你可以买v3个商品免费.问怎么最大能买多少价值 题意: 思路二维背包,dp[v1][v2][v3]=M ...
- hdu 4542 小明系列故事——未知剩余系
小明系列故事——未知剩余系 题意:操作0表示某数有n个约数,操作1为某数有n个非约数:n <= 47777,若是存在小于2^62的数符合,则输出该数,否则若是不存在输出Illegal,若是大于2 ...
- HDU 4511 小明系列故事——女友的考验 (AC自动机+DP)
小明系列故事——女友的考验 Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- HDUOJ-----4506小明系列故事——师兄帮帮忙
小明系列故事——师兄帮帮忙 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- HDU 4511 小明系列故事——女友的考验 (AC自动机 + DP)
小明系列故事——女友的考验 Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- HDU 4528 BFS 小明系列故事——捉迷藏
原题直通车:HDU 4528 小明系列故事——捉迷藏 分析: 标记时加两种状态就行. 代码: #include<iostream> #include<cstring> #inc ...
- hdu 4506 小明系列故事——师兄帮帮忙【幂取模乱搞】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4506 http://acm.hust.edu.cn/vjudge/contest/view.action ...
随机推荐
- Flutter 基础组件:图片和Icon
前言 Flutter中,可以通过Image组件来加载并显示图片,Image的数据源可以是asset.文件.内存以及网络. ImageProvider 是一个抽象类,主要定义了图片数据获取的接口load ...
- IO软件层次结构与假脱机技术
IO软件层次结构 用户层软件->设备独立性软件->设备驱动软件->中断处理程序->硬件 用户层软件实现与用户交互的接口,用户可直接使用该层提供的,与IO操作相关的库函数对设备进 ...
- 分别使用 Python 和 Math.Net 调用优化算法
1. Rosenbrock 函数 在数学最优化中,Rosenbrock 函数是一个用来测试最优化算法性能的非凸函数,由Howard Harry Rosenbrock 在 1960 年提出 .也称为 R ...
- 【Linux】配置ssh留下的一些思考和大坑解决办法
今天传包突然有问题,结果发现是ssh出现了问题,密钥也在里面,都是正常的,但是还有什么问题呢? 后来总结下需要注意点: 1.最开始你要检查.ssh/ 这个文件夹的权限,看下权限是否为700或者为75 ...
- CTF------pwn笔记
地址:http://pwnable.kr/play.php 题目: 使用MobaXterm连接(当然也可以使用别的软件进行连接,用的顺手就行) 连接成功后所以"ls"命令查看目录 ...
- 1.8V升3V芯片,1.8V升3.3V升压芯片方案
两节干电池由于耗电量电压会降低,无法长期稳定的输出3V或者3.3V供电,直接两节干电池会供电电压不稳,影响后面电路稳定.两节干电池的供电电压在1.8V-3.2V左右 1.8V升3V升压芯片方案, 如P ...
- 使用Redis有序集合实现投票排行榜系统
https://mp.weixin.qq.com/s/GcPF8jte8Nzi4Ae0jojXuQ 先说最简单的排行榜.其实之前我们有个用于投票的系统,但是他没有用有序集合,他是这样做的:用redis ...
- (Oracle)导出表结构
DECLARE cursor t_name is SELECT rank() over(order by a.TABLE_NAME) as xiaolonglong,a.TABLE_NAME FROM ...
- js控制页面元素值
// TODO id 定位 var ele1 = document.getElementById("test1"); // alert(ele1.value) // TODO 根据 ...
- cms_文章管理
文章管理 文章管理前端页面 把引入的多个布局抽成了公共代码 <%@ page language="java" contentType="text/html; cha ...