分组背包(至少选一个)

我真的搞不懂为什么,所以现在就只能当作是模板来用吧 如果有大牛看见 希望评论告诉我

&代码:

#include <cstdio>
#include <bitset>
#include <iostream>
#include <set>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <map>
#include <queue>
#include <vector>
using namespace std; #define N 10005
int dp[102][N], s[102], v[102], w[102]; int main() {
int n, m, k, S, i, j;
while(scanf("%d%d%d", &n, &m, &S) != EOF) {
for(i = 0; i < n; i++)
scanf("%d%d%d", &s[i], &v[i], &w[i]);
for(i = 0; i <= S; i++)
for(j = 0; j <= m; j++) {
if(i == 0)
dp[i][j] = 0;
else
dp[i][j] = -1;
}
for(i = 1; i <= S; i++)
for(j = 0; j < n; j++)
if(s[j] == i) //第i款
for(k = m; k >= v[j]; k--) {
//下面2行的顺序绝对不能变, 如果交换了 就会wa 不知道为什么
dp[i][k] = max(dp[i][k], dp[i][k - v[j]] + w[j]);
dp[i][k] = max(dp[i][k], dp[i - 1][k - v[j]] + w[j]);
}
if(dp[S][m] < 0)
printf("Impossible\n");
else
printf("%d\n", dp[S][m]);
}
return 0;
}

HDU 3033 分组背包(至少选一个)的更多相关文章

  1. HDU 3033 分组背包变形(每种至少一个)

    I love sneakers! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. HDU 3033 分组背包

    给出N个物品.M金钱.W种类 给出N个物品的性质:所属种类,花费.价值 求每一种类物品至少一个的前提下,所能购买到的最大价值 dp[i][k]表示在第i种物品.总花费为k的最大价值 dp[i][k]= ...

  3. hdu 3033 I love sneakers!(分组背包+每组至少选一个)

    I love sneakers! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. hdu 1712 (分组背包入门)

    http://acm.hdu.edu.cn/showproblem.php?pid=1712 问题 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].这些物品被划分为若干组, ...

  5. ACboy needs your help(HDU 1712 分组背包入门)

    ACboy needs your help Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  6. HDU 1712 分组背包

    ACboy needs your help Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  7. 背包系列 hdu 3535 分组背包

    题意: 有n组工作,现在有T分钟时间去做一些工作.每组工作里有m个工作,并且类型为s,s类型可以为0,1,2,分别表示至少选择该组工作的一项,至多选择该工作的一项,不限制选择.每个工作有ci,gi两个 ...

  8. HDU 4341 分组背包

    B - Gold miner Time Limit:2000MS      Memory Limit:32768KB     Description Homelesser likes playing ...

  9. HDU 3033 组合背包变形 I love sneakers!

    I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...

随机推荐

  1. halcon之 distance_transform

    Compute the distance transformation of a region   该算子的作用是计算对region转换距离.该算子的形式为distance_transform(Reg ...

  2. Deseq2 的可视化策略汇总

    1) MA图   对于MA图而言, 横坐标为该基因在所有样本中的均值,basemean = (basemean_A + basemean_B ) / 2, 纵坐标为 log2Fold change 其 ...

  3. Spring-Cloud-Ribbon学习笔记(二):自定义负载均衡规则

    Ribbon自定义负载均衡策略有两种方式,一是JavaConfig,一是通过配置文件(yml或properties文件). 需求 假设我有包含A和B服务在内的多个微服务,它们均注册在一个Eureka上 ...

  4. 使用Docker的macvlan为容器提供桥接网络及跨主机通讯

    对于了解Docker容器网络的朋友,我想对虚拟机的网络也不会陌生,毕竟我们是跟随这个时代一起学习和进步的人.相比VM,Docker的网络也在逐步走向成熟,本文主要针对其中的macvlan做下简单的介绍 ...

  5. 4.express 框架

    express express 官网:http://expressjs.com/ 中文:http://www.expressjs.com.cn/ 库:jquery 一堆 的属性和方法 框架:expre ...

  6. ApplicaitionContext妙用request解耦合

    本文记录一个web应用中,如果要获取request对象怎么获取,本次主要思考来自看到上次文件必须把request对象放进service层导致的疑问,然后学习总结之. 第一,也是我们最常用的,在cont ...

  7. java学习之路--String类的基本方法

    String类常见的功能 获取 1.1 字符串中包含的字符数,也就是获取字符串的长度:int length(); 1.2 根据位置获取某个位置上的字符:char charAt(int index) 1 ...

  8. C#在WinForm下使用HttpWebRequest上传文件

    转自:http://blog.csdn.net/shihuan10430049/article/details/3734398 这段时间因项目需要,要实现WinForm下的文件上传,个人觉得采用FTP ...

  9. juqery 点击分页显示,指定一页显示多少个,首次加载显示多少个

    源代码html: //源代码:html <div class="jq22"> <div class="hidden"> <li&g ...

  10. The way to unwind the stack on Linux EABI

    I. probe the stack frame structure The original idea is to unwind the function call stack according ...