题目链接:E - Product Development (atcoder.jp)

因为最多为5,因此可以暴力枚举

int dp[10][10][10][10][10];
int a[110][10];
int n, k, p;
signed main()
{
for (int i1 = 0; i1 <= 5; i1++)
for (int i2 = 0; i2 <= 5; i2++)
for (int i3 = 0; i3 <= 5; i3++)
for (int i4 = 0; i4 <= 5; i4++)
for (int i5 = 0; i5 <= 5; i5++)
dp[i1][i2][i3][i4][i5] = 1145141919810;
dp[0][0][0][0][0] = 0;
cin >> n >> k >> p;
for (int i = 1; i <= n; i++)
{
int x;
cin >> x;
for (int j = 1; j <= k; j++)
{
cin >> a[i][j];
}
for (int j = k + 1; j <= 5; j++)
{
a[i][j] = p;
}
for (int i1 = p; i1 >=0 ; i1--)
for (int i2 = p; i2 >=0 ; i2--)
for (int i3 = p; i3 >=0 ; i3--)
for (int i4 = p; i4 >=0 ; i4--)
for (int i5 = p; i5 >=0 ; i5--)
{
dp[min(p, i1 + a[i][1])][min(p, i2 + a[i][2])][min(p, i3 + a[i][3])][min(p, i4 + a[i][4])][min(p, i5 + a[i][5])] = min(dp[min(p, i1 + a[i][1])][min(p, i2 + a[i][2])][min(p, i3 + a[i][3])][min(p, i4 + a[i][4])][min(p, i5 + a[i][5])], dp[i1][i2][i3][i4][i5] + x);
}
}
if (dp[p][p][p][p][p] == 1145141919810)
cout << -1;
else
cout << dp[p][p][p][p][p];
}

也可以使用动态规划。没太看懂应该是状态压缩吧(jiangly)的代码

int main()
{
IOS;
int n, k, p; cin >> n >> k >> p;
vector<int> pw(k + 1);
pw[0] = 1;
for(int i = 1; i <= k; i ++)
pw[i] = pw[i - 1] * (p + 1);
vector<ll> dp(pw[k], -1ll);
dp[0] = 0;
for(int i = 0; i < n; i ++)
{
int c; cin >> c;
vector<int> a(k);
for(int j = 0; j < k; j ++) cin >> a[j];
for(int s = pw[k] - 1; s >= 0; s --)
{
int t = 0;
for(int j = 0; j < k; j ++)
{
int aa = s / pw[j] % (p + 1);
int na = min(p, aa + a[j]);
t += na * pw[j];
}
if(dp[s] != -1 && (dp[t] == -1 || dp[t] > dp[s] + c))
{
dp[t] = dp[s] + c;
}
}
}
cout << dp.back() << endl;
return 0;
}

k维背包的更多相关文章

  1. TOJ3596 二维背包

    3596.   Watch The Movie Time Limit: 2.0 Seconds   Memory Limit: 65536KTotal Runs: 424   Accepted Run ...

  2. hdu 4501 小明系列故事——买年货_二维背包

    题目:你可以有v1元,v2代金券,v3个物品免单,现在有n个商品,商品能用纸币或者代金券购买,当然你可以买v3个商品免费.问怎么最大能买多少价值 题意: 思路二维背包,dp[v1][v2][v3]=M ...

  3. dp 二维乃至多维背包

    洛谷P1855 榨取kkksc03 分析:套路是很明显的01背包,但是这时受约束的变量有两个了,这种情况下就该用多维背包了 分析方法一样的,用dp[i][j][k]表示从前i个愿望中挑选总时间和总金钱 ...

  4. HDU 2159 FATE (二维背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 解题报告:这题实际上是一个二维的背包问题,也可以由01背包扩展而来,01背包用一维数组,可想而知 ...

  5. rqnoj-329-刘翔!加油!-二维背包

    注意排除干扰项. 因为价值不会相等,所以价值的多少与本题没有任何关系,. 所以价值为干扰项,所以不用考虑. 二维背包,简单求解. #include<stdio.h> #include< ...

  6. hdu2159FATE(二维背包)

    http://acm.hdu.edu.cn/showproblem.php?pid=2159 Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在 ...

  7. NOI 4978 宠物小精灵之收服(二维背包)

    http://noi.openjudge.cn/ch0206/4978/ 描述 宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事. 一天,小智和皮卡丘来到了小精灵狩猎场,里面有很多珍贵的野生宠物 ...

  8. dp之二维背包poj2576

    题意:有一群sb要拔河,把这群sb分为两拨,两拨sb数只差不能大于1,输出这两拨人的体重,小的在前面...... 思路:把总人数除2,总重量除2,之后你会发现就是个简单的二维背包,有两个限制..... ...

  9. (第三场) A PACM Team 【dp,五维背包】

    链接:https://www.nowcoder.com/acm/contest/141/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  10. hdu 3496 Watch The Movie (二维背包)

    Watch The Movie Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)T ...

随机推荐

  1. Kettle - 简介

    ETL简介 Kettle简介 transformation 和 job的区别 Kettle 的核心组件 Kettle 特点 Kettle 的目录说明 Kettle 的文件说明 ETL简介 ETL,Ex ...

  2. win11 输入法自定义短语输出日期时间变量

    自定义短语中输入%yyyy%-%MM%-%dd% %HH%:%mm%:%ss%

  3. 附035.Kubernetes_v1.25.3高可用部署架构二

    目录 部署组件 kubeadm介绍 kubelet介绍 kubectl介绍 方案概述 方案介绍 部署规划 节点规划 主机名配置 变量准备 互信配置 环境初始化 部署高可用组件 HAProxy安装 Ke ...

  4. 【小鼓捣】手搓Verilog-CPU测试全流程自动化

    自动化流程思路 1.C++/Python:生成大量包含指定指令的mips程序(A.asm) 2.命令行:导出该mips程序指令的机器码(A.txt) 3.魔改MARS:产生测试所需的IM.DM存入信息 ...

  5. 三分钟构建高性能WebSocket服务 | 超优雅的Springboot整合Netty方案

    前言 每当使用SpringBoot进行Weboscket开发时,最容易想到的就是spring-boot-starter-websocket(或spring-websocket).它可以让我们使用注解, ...

  6. 测试驱动开发(TDD)浅析

    .wj_nav { display: inline-block; width: 100%; margin-bottom: 0.375rem } .wj_nav span { display: inli ...

  7. centos 防火墙配置,并限制端口

    查看防火墙状态 systemctl status firewalld 如果防火墙处于停止状态,则启动它: systemctl start firewalld 并设置防火墙开机自启: systemctl ...

  8. go krotos proto编译引用外部包 was not found or had errors

    前言 kratos protos 生成 pb.go 文件时,会出现引用其他 proto 文件报错 was not found or had errors,因找不到此文件而无法编译. 解决 首先我们先了 ...

  9. B@se-还原错误字母表转码的base64编码

    题目: 密文:MyLkTaP3FaA7KOWjTmKkVjWjVzKjdeNvTnAjoH9iZOIvTeHbvD== JASGBWcQPRXEFLbCDIlmnHUVKTYZdMovwipatNOe ...

  10. CENTOS 7 使用Docker安装oracle 11g

    1.docker第一次安装失败,下一次会提示同名的容器已经存在,解决办法: docker container ls -a 根据上面执行的接口,选择一个containerid,然后带入到下面的命令 do ...