博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bone Collector II(01背包kth)
阅读量:4910 次
发布时间:2019-06-11

本文共 2360 字,大约阅读时间需要 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 题目大意: 输入n,v,k分别代表n个物品,v的体积,以及要求v能装下第k大的价值。 01背包变形,加一维代表第几大,最后dp[v][k]即为答案。
#include 
#include
using namespace std;int v[105],w[105];int dp[1005][35],a[35],b[35];int n,val,k;int main(){ int T; cin>>T; while(T--) { memset(dp,0,sizeof dp); cin>>n>>val>>k; for(int i=1;i<=n;i++) cin>>v[i]; for(int i=1;i<=n;i++) cin>>w[i]; for(int i=1;i<=n;i++) for(int j=val;j>=w[i];j--) { for(int l=1;l<=k;l++) { a[l]=dp[j][l];///不取 b[l]=dp[j-w[i]][l]+v[i];//取 } a[k+1]=b[k+1]=-1; int x=1,y=1,z=1; while(z<=k&&(x<=k||y<=k))///更新,也可以直接排序 { if(a[x]>b[y]) dp[j][z]=a[x++]; else dp[j][z]=b[y++]; if(dp[j][z]!=dp[j][z-1]) z++; } } cout<
<<'\n'; } return 0;}
 

 

 

转载于:https://www.cnblogs.com/zdragon1104/p/9189080.html

你可能感兴趣的文章
Dcoker中启动mysql,并实现root远程访问
查看>>
第十六周总结
查看>>
PHP 文件上传
查看>>
认识“闭包”
查看>>
<nginx+PHP>nginx环境下配置支持php7
查看>>
Tomcat映射web工程
查看>>
第一周编程总结
查看>>
iOS---------获取当前年份
查看>>
PMD for Eclipse的安装和使用
查看>>
koa2-3
查看>>
MySQL慢查询日志总结
查看>>
ipad常见错误
查看>>
时钟效果
查看>>
Linux下安装与配置Nginx
查看>>
FCC 基础JavaScript 练习7
查看>>
真的要听妈妈的话。
查看>>
bzoj4873: [Shoi2017]寿司餐厅
查看>>
结对-航空购票系统-开发过程
查看>>
分支语句
查看>>
VBA语句 - 判断语句
查看>>