HDU 2639 第K大背包问题
来源:互联网 发布:mac 10.13 正式版 编辑:程序博客网 时间:2024/05/01 12:52
//状态方程和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,0,sizeof(dp));
for(int i=1;i<=n;i++){
scanf("%d",&w[i]);
}
for(int i=1;i<=n;i++){
scanf("%d",&c[i]);
}
for(int i=1;i<=n;i++){
for(int j=v;j>=c[i];j--){
for(int kk=1;kk<=k;kk++){
q1[kk]=dp[j-c[i]][kk]+w[i];
q2[kk]=dp[j][kk];
}
q1[k+1]=q2[k+1]=-1;
int h=1,h1=1,h2=1;
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-1]){
h++;
}
}
}
}
// for(int i=1;i<=k;i++){
// printf("%d ",dp[v][i]);
// }
// puts("");
printf("%d\n",dp[v][k]);
}
}
- HDU 2639 第K大背包问题
- hdu 2639 Bone Collector II 01背包问题 求第K大最优值。。
- hdu 2639求背包第K大值
- hdu 2639 Bone Collector II(第K大背包)
- HDU - 2639 Bone Collector II(第K大01背包)
- hdu 2639 Bone Collector II 第k大01背包
- hdu-2639-Bone Collector II【第K大背包】
- 背包问题--求第K大值
- hdu2639-01背包(第k大背包问题)
- hdu 2639 01背包第k优解
- HDU 2639 第K优01背包
- HDU 2639 (背包第K优解)
- HDU 2639 Bone Collector II / 第K大的01背包
- HDU 2639 Bone Collector II (求第K大的背包)
- HDU 2639 Bone Collector II(01背包 求第k大)
- Hdu 2639 Bone Collector II(第K大最优解01背包)
- hdu 2639Bone Collector II(01背包求第k大)
- HDU 2639 Bone Collector II [动态规划 第k大01背包]
- 程序员眼里 IE 浏览器是什么样的?
- 算法入门—字符串,文件,时间,类型函数积累
- poj 3417 Network(统计边被环覆盖的次数)
- vbs操作EXel
- Dijkstra算法时间复杂度
- HDU 2639 第K大背包问题
- qt超强精美绘图控件 - QCustomPlot一览 及 安装使用教程
- 黑莓OS10开发(3) 选择QML中的组件
- libsndfile 用法简介
- 【分享】Stanford Dataset全集之Online Reviews
- 对象根据字段排序
- 修改客户端svn用户名密码
- HDU 2689 Sort it(树状数组)(类似逆序数,同样不需要离散化)
- hibernate封装