博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2639 Bone Collector II 背包k优解
阅读量:5265 次
发布时间:2019-06-14

本文共 785 字,大约阅读时间需要 2 分钟。

01背包的转移方程为

dp[j]=max(dp[j],dp[j-vol[i]+cost[i]]);
因为要求解第k大的解
需要用二位数组储存

即dp[j][k];

j为体积 k为第几优的解

所以保存下转移过程中dp[j]与dp[j-vol[i]]的前k大的值

dp[j]与dp[j-vol[i]]两个状态中一共有k*2个值取其中前k大的数赋值与dp[j]中;

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define MAXN 100*111#include
#include
#define IN freopen("in.txt","r",stdin);int dp[1111][33],a[101],b[101],ans[333];bool cmp(int a,int b){ return a>b;}int main(){ int n,t,v,k; // IN; scanf("%d",&t); while(t--) { scanf("%d%d%d",&n,&v,&k); memset(dp,0,sizeof(dp)); for(int i=0; i
=b[i]; j--) { tot=0; memset(ans,0,sizeof(ans)); for(int p=0;p

转载于:https://www.cnblogs.com/kewowlo/p/4002582.html

你可能感兴趣的文章
Linux服务器在外地,如何用eclipse连接hdfs
查看>>
react双组件传值和传参
查看>>
[Kaggle] Sentiment Analysis on Movie Reviews
查看>>
价值观
查看>>
mongodb命令----批量更改文档字段名
查看>>
MacOS copy图标shell脚本
查看>>
国外常见互联网盈利创新模式
查看>>
Oracle-05
查看>>
linux grep 搜索查找
查看>>
Not enough free disk space on disk '/boot'(转载)
查看>>
android 签名
查看>>
android:scaleType属性
查看>>
mysql-5.7 innodb 的并行任务调度详解
查看>>
shell脚本
查看>>
Upload Image to .NET Core 2.1 API
查看>>
Js时间处理
查看>>
Java项目xml相关配置
查看>>
三维变换概述
查看>>
vue route 跳转
查看>>
【雷电】源代码分析(二)-- 进入游戏攻击
查看>>