博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
01背包-第k优解
阅读量:4583 次
发布时间:2019-06-09

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

The title of this problem is familiar,isn't it?yeah,if you had took part in the "Rookie Cup" competition,you must have seem this title.If you haven't seen it before,it doesn't matter,I will give you a link: 
Here is the link:   
Today we are not desiring the maximum value of bones,but the K-th maximum value of the bones.NOTICE that,we considerate two ways that get the same value of bones are the same.That means,it will be a strictly decreasing sequence from the 1st maximum , 2nd maximum .. to the K-th maximum. 
If the total number of different values is less than K,just ouput 0.

Input

The first line contain a integer T , the number of cases. 

Followed by T cases , each case three lines , the first line contain two integer N , V, K(N <= 100 , V <= 1000 , K <= 30)representing the number of bones and the volume of his bag and the K we need.

And the second line contain N integers representing the value of each bone. The third line contain N integers representing the volume of each bone. 

Output

One integer per line representing the K-th maximum of the total value (this number will be less than 2 31). 

Sample Input

35 10 21 2 3 4 55 4 3 2 15 10 121 2 3 4 55 4 3 2 15 10 161 2 3 4 55 4 3 2 1

Sample Output

1220
#include 
#include
using namespace std; #define max(a,b) ((a)>(b)?(a):(b)) const int maxn = 1005; int main() { int T; scanf("%d", &T); int dp[maxn][33], val[maxn], vol[maxn], A[33], B[33]; while (T--) { int n, v, k; scanf("%d %d %d", &n, &v, &k); int i, j, kk; for (i=0; i
=vol[i]; j--) { for (kk=1; kk<=k; kk++) { A[kk] = dp[j-vol[i]][kk] + val[i]; B[kk] = dp[j][kk]; } A[kk] = -1, B[kk] = -1; a = b = c = 1; while (c<=k && (A[a] != -1 || B[b] != -1)) { if (A[a] > B[b]) dp[j][c] = A[a++]; else dp[j][c] = B[b++]; if (dp[j][c] != dp[j][c-1]) c++; } } printf("%d\n", dp[v][k]); } return 0; }

 

转载于:https://www.cnblogs.com/carry-2017/p/7367544.html

你可能感兴趣的文章
简单员工管理实例
查看>>
textwrap 模块
查看>>
SAP 到出XLS
查看>>
HSV
查看>>
JAVA程序中SQL语句无法传递中文参数
查看>>
Android学习_数据库查询使用rawQuery遇到的问题
查看>>
|待研究|委托付款的支付状态触发器
查看>>
redis集群中的主从复制架构(3主3从)
查看>>
初始Linux(其实之前接触过(*^__^*) 嘻嘻……)
查看>>
一些多项式的整理
查看>>
NIO selector
查看>>
MySQL中DATETIME、DATE和TIMESTAMP类型的区别
查看>>
asp代码获取年数,季度数.星期数,天数,小时数,分钟数,秒数等时
查看>>
python之建完model之后操作admin
查看>>
Java 类加载机制 ClassLoader Class.forName 内存管理 垃圾回收GC
查看>>
shell 脚本后台运行知识
查看>>
php设置cookie,在js中如何获取
查看>>
实验三+099+吴丹丹
查看>>
[bzoj3036]绿豆蛙的归宿
查看>>
[洛谷P5057][CQOI2006]简单题
查看>>