第k大值01背包问题
http://acm.hdu.edu.cn/showproblem.php?pid=2639
/*
第一行输入t 代表t组测试数据
第二行 输入物品个数 背包容量 要求的第k大值
物品的价值
物品的重量
分析:
平常我们用的dp[j]=max(dp[j],dp[j-w[i]]+v[i]);所求的就是最大值 当然在1物品下容量为10的情况下有最大值 次大值
三大值 。。。。。。。。。。。。
很容易想到用dp[][k]二维数组 在当前的容量下第k大值的价值
*/
include
include
include
include
using namespace std;
int dp[1005][50],d1[50];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m,k;
int w[105],v[105];
memset(dp,0,sizeof(dp));
scanf("%d%d%d",&n,&m,&k);
for(int i=1; i<=n; i++)
scanf("%d",&v[i]);
for(int i=1; i<=n; i++)
scanf("%d",&w[i]);
for(int i=1;i<=n;i++)
for(int j=m;j>=w[i];j--)
{
int count=0;
for(int q=1;q<=k;q++)
{
d1[count++]=dp[j][q];//统统加入一个数组
d1[count++]=dp[j-w[i]][q]+v[i];
}
sort(d1,d1+count);//然后排序就是从最大值到第k大值了
int op=1;
for(int q=count-1;q>=0;q--)
{
if(op>k)break;
if(q==count-1||d1[q]!=d1[q+1])
dp[j][op++]=d1[q];//比如5 5 5 4 3 2 这里面有重复的值 第一个5和第二个5都是最大值 所以去重
}
}
printf("%d\n",dp[m][k]);
}
return 0;
}
第k大值01背包问题的更多相关文章
- HDU 2639(01背包求第K大值)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2639 Bone Collector II Time Limit: 5000/2000 MS (Jav ...
- POJ2985 The k-th Largest Group[树状数组求第k大值+并查集||treap+并查集]
The k-th Largest Group Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 8807 Accepted ...
- PAT天梯赛练习题 L3-002. 堆栈(线段树查询第K大值或主席树)
L3-002. 堆栈 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家都知道“堆栈”是一种“先进后出”的线性结构,基本操作有 ...
- 动态求区间K大值(权值线段树)
我们知道我们可以通过主席树来维护静态区间第K大值.我们又知道主席树满足可加性,所以我们可以用树状数组来维护主席树,树状数组的每一个节点都可以开一颗主席树,然后一起做. 我们注意到树状数组的每一棵树都和 ...
- POJ 2104 K-th Number ( 求取区间 K 大值 || 主席树 || 离线线段树)
题意 : 给出一个含有 N 个数的序列,然后有 M 次问询,每次问询包含 ( L, R, K ) 要求你给出 L 到 R 这个区间的第 K 大是几 分析 : 求取区间 K 大值是个经典的问题,可以使用 ...
- 复杂度n求数组的第K大值
利用快速排序的方法进行: #include<iostream> using namespace std; int test() { ; return a; } int quickSort( ...
- 【poj1901-求区间第k大值(带修改)】树状数组套主席树
901: Zju2112 Dynamic Rankings Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 7025 Solved: 2925[Sub ...
- HDU - 4006 The kth great number multiset应用(找第k大值)
The kth great number Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao Ming ...
- 第K大01背包
其实这个问题,真的挺好想的,但是我咋想了那么久呢~~ 很好理解,第K大01背包一定基于01背包,dp数组也很容易的想到由dp[V] ----> dp[V][K],来表示背包容量是V时候的第 ...
随机推荐
- Gprinter Android SDK V1.0 使用说明
佳博打印机代理商淘宝店https://shop107172033.taobao.com/index.htm?spm=2013.1.w5002-9520741823.2.Sqz8Pf 在此店购买的打印机 ...
- 用Ueditor存入数据库带HTML标签的文本,从数据库取出来后,anjular用ng-bind-html处理带HTML标签的文本
ng.module('index-filters', []) .filter('trustHtml', function ($sce) { return function (input) { retu ...
- 查找被锁对象的名称、sid,锁定的类型-1123
select lk.sid,lk_obj.object_id,obj.object_name,DECODE(LK.LMODE,0,'None',1,'Null',2,'Row-S (SS)',3,'R ...
- CSRF 攻击的应对之道
转载自imb文库 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在 ...
- ajax使用中发现的问题与深入扩展(for循环中嵌套ajax)
在学习ajax的过程中,我曾经遇到过这样的一个问题,为了得到一个详情列表,我要先向服务器去请求得到索引表,简单描述就是ajax中的success中的for循环中再次嵌套了ajax,结果第二层succe ...
- 基于GBT28181:SIP协议组件开发-----------第三篇SIP注册流程分析实现
原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3941172.html,qq:1269122125. 上两章节简要的 ...
- javascript——可以判断值的类型的函数
function classof(o){ return Object.prototype.toString.call(0).slice(8,-1); } Function.prototype.getN ...
- spring配置中引入properties
<context:property-placeholder location="classpath*:db.properties" />
- Chrome调试(转)
原文地址:http://blog.csdn.net/chenmoquan/article/details/44943245#comments 觉得写的很适合web开发的新手 Chrome 的开发者工具 ...
- Java学习----到底调用哪一个方法(多态)
public class Father { public void print() { System.out.println("Father:print()"); } } publ ...