k维背包
题目链接: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维背包的更多相关文章
- TOJ3596 二维背包
3596. Watch The Movie Time Limit: 2.0 Seconds Memory Limit: 65536KTotal Runs: 424 Accepted Run ...
- hdu 4501 小明系列故事——买年货_二维背包
题目:你可以有v1元,v2代金券,v3个物品免单,现在有n个商品,商品能用纸币或者代金券购买,当然你可以买v3个商品免费.问怎么最大能买多少价值 题意: 思路二维背包,dp[v1][v2][v3]=M ...
- dp 二维乃至多维背包
洛谷P1855 榨取kkksc03 分析:套路是很明显的01背包,但是这时受约束的变量有两个了,这种情况下就该用多维背包了 分析方法一样的,用dp[i][j][k]表示从前i个愿望中挑选总时间和总金钱 ...
- HDU 2159 FATE (二维背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 解题报告:这题实际上是一个二维的背包问题,也可以由01背包扩展而来,01背包用一维数组,可想而知 ...
- rqnoj-329-刘翔!加油!-二维背包
注意排除干扰项. 因为价值不会相等,所以价值的多少与本题没有任何关系,. 所以价值为干扰项,所以不用考虑. 二维背包,简单求解. #include<stdio.h> #include< ...
- hdu2159FATE(二维背包)
http://acm.hdu.edu.cn/showproblem.php?pid=2159 Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在 ...
- NOI 4978 宠物小精灵之收服(二维背包)
http://noi.openjudge.cn/ch0206/4978/ 描述 宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事. 一天,小智和皮卡丘来到了小精灵狩猎场,里面有很多珍贵的野生宠物 ...
- dp之二维背包poj2576
题意:有一群sb要拔河,把这群sb分为两拨,两拨sb数只差不能大于1,输出这两拨人的体重,小的在前面...... 思路:把总人数除2,总重量除2,之后你会发现就是个简单的二维背包,有两个限制..... ...
- (第三场) A PACM Team 【dp,五维背包】
链接:https://www.nowcoder.com/acm/contest/141/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- hdu 3496 Watch The Movie (二维背包)
Watch The Movie Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)T ...
随机推荐
- SSM:Spring整合Mybatis时,连接池和SQLSessionFactory的联系!
- python xlrd xlwr函数 读取excel好文总结
https://www.cnblogs.com/python-robot/p/9958352.html 官网: http://www.python-excel.org/ 好文: https://www ...
- 搭建个人多机器ssh连接平台
最近新配了个主机,有了多个设备,ssh连接的功能可以优化很多体验,便又开始鼓捣.以前都是windows连各种linux,比较方便:这次是在windows之间,还是小查了好一会儿,留个记录 SSH连接的 ...
- 获取当前电脑屏幕的dpi
<div id="test" style="width:1in;height:1in;overflow:hidden;"></div> ...
- 人工智能-A*算法-八数码问题
一,A*算法设计思想 A*算法(A-star)是一种寻路算法,主要用于游戏.机器人等领域. 它的设计思想是将最短路径搜索问题转化为一个优化问题,通过计算每个节点的评分(f(n) = g(n) + h( ...
- Nginx 配置 HTTPS 完整过程
配置站点使用 https,并且将 http 重定向至 https. 1. nginx 的 ssl 模块安装 查看 nginx 是否安装 http_ssl_module 模块. $ /usr/local ...
- 环境配置-Git和GitLab
Git安装 到官网下载安装包,直接一路next即可. https://git-scm.com/download/win 配置用户名和用户邮箱 $ git config --global user.na ...
- 【SpringCloud】Gateway新一代网关
Gateway新一代网关 概述简介 官网 上一代zuul 1.x https://github.com/Netflix/zuul/wiki 当前gateway https://cloud.spring ...
- IDEA中高效配置Python开发环境搭建
原文地址:IDEA中高效配置Python开发环境搭建-张苹果博客 Mac用户须知:系统已预装Python 2.7,如需新版建议通过Homebrew安装. # 张苹果博客:https://zhangpi ...
- MySQL的并发问题的解决方案
怎么解决脏读.不可重复读.幻读这些问题呢?其实有两种可选的解决方案 方案一.读操作利用MVCC(多版本并发控制),写操作进行加锁. 所谓的MVCC,就是生成一个ReadView,通过ReadView找 ...