HDU 2639 Bone Collector II (01背包求第K优解)
来源:互联网 发布:中科院软件研究所待遇 编辑:程序博客网 时间:2024/06/12 00:57
题意:01背包求第k优解
题解:因为01背包其实把所有可能的情况全列举了,取第k优解无非将数组增加一维,f[i][v][k]表示在V体积里前i个物品第k大的解。在求解过程中再每次运算时,运算k次即可,过程需要两个额外数组维护。
#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>#include <map>#include <queue>#include <algorithm>using namespace std;const int N = 1010;const int INF = 0x3f3f3f3f;int f[N][35];int v[105],w[105],A[35],B[35];int main(){ int T; scanf("%d",&T); while(T--) { int n,W,k; scanf("%d%d%d",&n,&W,&k); memset(f,0,sizeof(f)); for(int i = 1; i <= n; i++) scanf("%d",&v[i]); for(int i = 1; i <= n; i++) scanf("%d",&w[i]); for(int i = 1; i <= n; i++) { for(int j = W; j >= w[i]; j--) { int p; for(p = 1; p <= k; p++) { A[p] = f[j][p]; B[p] = f[j-w[i]][p]+v[i]; } A[p] = B[p] = -1; int a,b,c; a = b = c = 1; while(c <= k && (A[a] != -1 || B[b] != -1)) { if(A[a] > B[b]) f[j][c] = A[a++]; else f[j][c] = B[b++]; if(f[j][c] != f[j][c-1]) c++; } } } printf("%d\n",f[W][k]); } return 0;}
0 0
- hdu 2639 Bone Collector II(求第k优解 01背包)
- hdu 2639 Bone Collector II(01背包求第k优解)
- HDU 2639 Bone Collector II (01背包求第K优解)
- Hdu 2639 Bone Collector II (01背包第k优解)
- hdu 2639 Bone Collector II 01背包第K优解
- HDU 2639 Bone Collector II 01背包第K优解
- hdu 2639 Bone Collector II 01背包 第k优解
- HDU 2639 Bone Collector II 01背包第k优解
- Bone Collector II HDU - 2639 01背包,第k优解
- HDU 2639 Bone Collector II (背包 第K优解)
- hdu 2639 Bone Collector II (dp 01背包求第k优解)
- hdu-2639-01背包变形之求第k优解-Bone Collector II
- hdu 2639Bone Collector II(01背包求第k大)
- Bone Collector II - HDU 2639 背包第k优解
- hdu 2639Bone Collector II 01背包第k大问题
- HDU - 2639 Bone Collector II(第K大01背包)
- hdu 2639 Bone Collector II 第k大01背包
- HDU 2639 Bone Collector II(01背包第K大解)
- 从 URL 输入到页面展现发生了什么?(What really happens when you navigate to a URL)
- Deserialize JSON / NSDictionary to Swift objects 将JSON 或Dic转为类对象
- 算法竞赛入门习题2-3倒三角
- Android第十九课;监听ListView列表项点击事件及滚动事件
- WARN [com.opensymphony.xwork2.ognl.OgnlValueStack] - Could not find property [org.apache.catalina.js
- HDU 2639 Bone Collector II (01背包求第K优解)
- CCF 中间数解析
- Android项目实战(二十九):酒店预定日期选择
- BZOJ 2844 高斯消元 线性基
- 用 WEKA 进行数据挖掘,第 2 部分: 分类和群集
- build.gradle
- 矩阵特征值分解与奇异值分解(SVD)含义解析及应用
- floyd 算法 带输出路劲
- PAT---B1002. 写出这个数 (20)