HDU2639[背包第K大]
题目链接【http://acm.hdu.edu.cn/showproblem.php?pid=2639】
题意:求第k大背包。
题解:利用二路归并的思想,求解第K大的值。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAXN = ;
int dp[MAXN][], w[MAXN], v[MAXN];
int N, W, K;
int A[], B[];
void super_kth()
{
for(int i = ; i <= N; i++)
{
for(int j = W; j >= w[i]; j--)
{
for(int l = ; l <= K; l++)
{
A[l] = dp[j - w[i]][l] + v[i]; //放i
B[l] = dp[j][l];//不放i
}
int nu = , x = , y = ;
A[K + ] = -;
B[K + ] = -;
while(nu <= K && (A[x] != - || B[y] != -))
{
if(A[x] > B[y])
dp[j][nu] = A[x++];
else
dp[j][nu] = B[y++];
if(dp[j][nu] != dp[j][nu - ])//不相等的第k大背包
nu++;
}
}
}
printf("%d\n", dp[W][K]);
}
int main ()
{
int T;
scanf("%d", &T);
while(T--)
{
memset(dp, , sizeof(dp));
scanf("%d%d%d", &N, &W, &K);
for(int i = ; i <= N; i++)
scanf("%d", &v[i]);
for(int i = ; i <= N; i++)
scanf("%d", &w[i]);
super_kth();
}
return ;
}
HDU2639[背包第K大]的更多相关文章
- HDU2639(01背包第K大)
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 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 ...
- HDU 2639(01背包第K大)
http://acm.hdu.edu.cn/showproblem.php?pid=2639 http://blog.csdn.net/lulipeng_cpp/article/details/758 ...
- hdu 2639 Bone Collector II(01背包 第K大价值)
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- HDU 2639(01背包求第K大值)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2639 Bone Collector II Time Limit: 5000/2000 MS (Jav ...
- HDU 2639 Bone Collector II(01背包变形【第K大最优解】)
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 第K大01背包
其实这个问题,真的挺好想的,但是我咋想了那么久呢~~ 很好理解,第K大01背包一定基于01背包,dp数组也很容易的想到由dp[V] ----> dp[V][K],来表示背包容量是V时候的第 ...
- HDU 2639 01背包求第k大
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- dp之01背包hdu2639(第k优解)
http://acm.hdu.edu.cn/showproblem.php?pid=2639 题意:给出一行价值,一行体积,让你在v体积的范围内找出第k大的值.......(注意,不要 和它的第一题混 ...
随机推荐
- 【Chrome】如何在C++中增加给JavaScript调用的API
本文示例说明了如何在Chrome浏览器中增加JavaScript API.为了简化,先假设是在已有的namespace中增加一个新的API,文章的最后将指出如果增加一下全新的namespace所需注意 ...
- 绩效考核指标KPI 听课笔记
以前一直听人在说KPI,今天终于明白KPI是什么意思了!
- OGG学习笔记01-基础概述
OGG学习笔记01-基础概述 OGG(Oracle Golden Gate),最近几年在数据同步.容灾领域特别火,甚至比Oracle自己的原生产品DataGuard还要风光,主要是因为其跨平台.跨数据 ...
- 轻松搞定javascript日期格式化问题
Date.prototype.format = function(f){ var d = this f = f || "yyyy-MM-dd hh:mm:ss" return f. ...
- UIImage学习笔记
UIImage是什么 用来管理APP里的图片资源,可以用来表示设备支持的图片资源,不仅仅是jpg和png. UIImage是immutable的,因此也是线程安全的. iOS支持的所有的图片格式 链接 ...
- Linux虚拟机下安装配置MySQL
一. 下载mysql5.7 http://mirrors.sohu.com/mysql/MySQL-5.7/ Linux下载: 输入命令:wget http://mirrors.sohu.c ...
- Composer入门
摘要 本文介绍Composer的入门知识,包括require和autoload部分. Java有Maven, Node.js有npm, ROR有gem, 这些语言的程序员在开心地使用包管理工具加速开发 ...
- linux面试题集锦4《转》
四.编程与应用题: 1.用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下. 参考程序: #!/bin/sh FILENAME= echo “Input file na ...
- Apache Tomcat部署java web项目
本教程安装环境为windows服务器 在服务器中下载安装JDK JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8 ...
- angular 格式化日期
参考:http://blog.csdn.net/zk437092645/article/details/37882191 html: <input type="text" d ...