//状态方程和01背包类似,dp[j][k]表示背包容量为j的第k大背包的值。。。。。。。。。。

 //应当注意的是此时dp[j][1.....k]应当是递减的。。。。。。。。。。。。。。。。。。。。

 #include<stdio.h>

 #include<string.h>
#define Max(x,y) (x>y?x:y)
#define max_v 1000+10
#define max_k 30+5
#define max_n 100+5 int dp[max_v][max_k],w[max_n],c[max_n];
int q1[max_k],q2[max_k]; int main(){
int t;
scanf("%d",&t);
while(t--){
int n,v,k;
scanf("%d%d%d",&n,&v,&k);
memset(dp,,sizeof(dp));
for(int i=;i<=n;i++){
scanf("%d",&w[i]);
}
for(int i=;i<=n;i++){
scanf("%d",&c[i]);
}
for(int i=;i<=n;i++){
for(int j=v;j>=c[i];j--){
for(int kk=;kk<=k;kk++){
q1[kk]=dp[j-c[i]][kk]+w[i];
q2[kk]=dp[j][kk];
}
q1[k+]=q2[k+]=-;
int h=,h1=,h2=;
while(h<=k&&(h1<=k||h2<=k)){
if(q1[h1]>q2[h2]){
dp[j][h]=q1[h1];
h1++;
}
//else if(q1[h1]<q2[h2]){
else{
dp[j][h]=q2[h2];
h2++;
}
if(dp[j][h]!=dp[j][h-]){
h++;
}
}
}
}
// for(int i=1;i<=k;i++){
// printf("%d ",dp[v][i]);
// }
// puts("");
printf("%d\n",dp[v][k]);
}
}

HDU 2639 第K大背包问题的更多相关文章

  1. hdu 2639 第k大01背包

    求每个状态里的k优解,然后合并 /* HDU 2639 求01背包的第k大解. 合并两个有序序列 */ #include<stdio.h> #include<iostream> ...

  2. HDU 2639 Bone Collector II(01背包变形【第K大最优解】)

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  3. (01背包 第k优解) Bone Collector II(hdu 2639)

    http://acm.hdu.edu.cn/showproblem.php?pid=2639       Problem Description The title of this problem i ...

  4. HDU 2639(01背包求第K大值)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2639 Bone Collector II Time Limit: 5000/2000 MS (Jav ...

  5. HDU 2639(01背包第K大)

    http://acm.hdu.edu.cn/showproblem.php?pid=2639 http://blog.csdn.net/lulipeng_cpp/article/details/758 ...

  6. HDU 2639 背包第k优解

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  7. HDU 2639 01背包求第k大

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  8. HDU 2639 Bone Collector II【01背包 + 第K大价值】

    The title of this problem is familiar,isn't it?yeah,if you had took part in the "Rookie Cup&quo ...

  9. hdu 2639 Bone Collector II(01背包 第K大价值)

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

随机推荐

  1. python-爬免费ip并验证其可行性

    前言 最近在重新温习python基础-正则,感觉正则很强大,不过有点枯燥,想着,就去应用正则,找点有趣的事玩玩 00xx01---代理IP 有好多免费的ip,不过一个一个保存太难了,也不可能,还是用我 ...

  2. Ubuntu中使用Nginx+rtmp搭建流媒体直播服务

    一.背景 本篇文章是继上一篇文章<Ubuntu中使用Nginx+rtmp模块搭建流媒体视频点播服务>文章而写,在上一篇文章中我们搭建了一个点播服务器,在此基础上我们再搭建一个直播服务器, ...

  3. badboy的录制和jmeter的使用

    v  Jmeter是什么 Apache Jmeter是Apache组织开发的基于Java的压力测试工具. Jmeter可以用于对服务器.网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析 ...

  4. JS写一个方法,传入一个数组,返回该数组的层深(维度)

    现在我们有一个多维数组,我们想得到该数组的层深,即最大维度 如:var arr = [1, [4,[5,6,[7]]], [2,3]] = 0:返回4:那么我们该怎么做呢? 核心思想:递归,循环遍历 ...

  5. java笔试之求int型正整数在内存中存储时1的个数

    输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数. 关键点:n与二进制的1相与:判断最末位是否为1:向右移位. 类似题目是查找输入整数二进制中1的个数. package test; ...

  6. 2018-8-10-docfx-做一个和微软一样的文档平台

    title author date CreateTime categories docfx 做一个和微软一样的文档平台 lindexi 2018-08-10 19:16:51 +0800 2018-2 ...

  7. PAT甲级——A1011 World Cup Betting

    With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...

  8. mybatis # $的区别

    1 #是将传入的值当做字符串的形式,eg:select id,name,age from student where id =#{id},当前端把id值1,传入到后台的时候,就相当于 select i ...

  9. retrying模块的使用

    安装模块:pip3 install retrying 使用方式: 使用retrying模块提供的retry模块 通过装饰器的方式使用,让装饰器的函数反复的执行 retry可以传入参数stop_max_ ...

  10. svn命令获取项目中被忽略文件情况

    第一步.通过终端进入项目目录下第二步.运行命令svn pg svn:ignore -R