题目链接【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大]的更多相关文章

  1. HDU2639(01背包第K大)

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  2. 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 ...

  3. HDU 2639(01背包第K大)

    http://acm.hdu.edu.cn/showproblem.php?pid=2639 http://blog.csdn.net/lulipeng_cpp/article/details/758 ...

  4. hdu 2639 Bone Collector II(01背包 第K大价值)

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  5. HDU 2639(01背包求第K大值)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2639 Bone Collector II Time Limit: 5000/2000 MS (Jav ...

  6. HDU 2639 Bone Collector II(01背包变形【第K大最优解】)

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  7. 第K大01背包

    其实这个问题,真的挺好想的,但是我咋想了那么久呢~~ 很好理解,第K大01背包一定基于01背包,dp数组也很容易的想到由dp[V]  ---->   dp[V][K],来表示背包容量是V时候的第 ...

  8. HDU 2639 01背包求第k大

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  9. dp之01背包hdu2639(第k优解)

    http://acm.hdu.edu.cn/showproblem.php?pid=2639 题意:给出一行价值,一行体积,让你在v体积的范围内找出第k大的值.......(注意,不要 和它的第一题混 ...

随机推荐

  1. java--九九乘法表

    /* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作者:邱学伟 * 完成日期:2013 年 7 月 ...

  2. 安装javajava整合Flex

    PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! 这几天在学一个叫Flex的东西,之前也没搞过这一类的东西认为既神秘又生疏,随 ...

  3. VS2013提示error C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead.

    在project属性内加上最后一句_CRT_SECURE_NO_WARNINGS即可

  4. Thymeleaf 笔记

    th:each=”aname : ${namelist}” th:if=”${name} == ‘SERVICED’” 页面使用Map集合 <div th:each="osl : ${ ...

  5. [ios2] 利用钥匙串,在应用里保存用户密码的方法 【转】

    想在应用里保存帐号.密码等信息的话,直接存到 plist 里显然是不负责任的,自己折腾加密既麻烦又不能保证不被反编译破解.实际上苹果 iOS 和 Mac OS X 系统自带了一套敏感信息保存方案:&q ...

  6. 【Linux学习三】Linux系统目录架构

    主要包括: ●bin:保存的是可执行文件,二进制,就是命令 ●boot:引导目录,操作系统的启动加载,包含版本内核文件.greb引导程序- ●dev:硬件设备文件,如硬盘.网卡.声卡.终端.显卡,每一 ...

  7. 51nod1279(二分)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1279 题意:中文题诶- 思路: 就想短板效应一样,很显然决定 ...

  8. Gpt转mbr

    1)Shift + F10 2)diskpart 3)list disk 4)select dist 0 5)clean 6)convert mbr [注]mbr常用于windows操作系统,而gpt ...

  9. 【Python】32. Longest Valid Parentheses

    Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...

  10. Mutex的使用方法以及封装的AutoLock介绍(转载)

    Mutex-互斥类 互斥类-MutexMutex是互斥类,用于多线程访问同一个资源的时候,保证一次只有一个线程能访问该资源.在<Windows核心编程>①一书中,对于这种互斥访问有一个很形 ...