2016背包专题1005
来源:互联网 发布:深圳赛维网络招聘 编辑:程序博客网 时间:2024/05/16 09:15
Bone Collector II
Time Limit : 5000/2000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 20 Accepted Submission(s) : 17
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Here is the link:http://acm.hdu.edu.cn/showproblem.php?pid=2602
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
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
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
思路:在01背包基础上做,要求的是第K个最大值,那么就用两个数组记录f[j]和f[j-a[i].b]+a[i].a,然后循环跑一遍。
代码:#include <iostream>#include <algorithm>#include <string.h>#include <stdio.h>using namespace std;struct node{ int a,b;}a[1005];int f[1005][35];int b[105],c[105];int max(int x,int y){ if(x>y)return x; else return y;}int main(){ int T; cin>>T; while(T--) { int m,n,k; cin>>m>>n>>k; int i,j; for(i=0;i<m;i++) { cin>>a[i].a; } for(i=0;i<m;i++) { cin>>a[i].b; } memset(f,0,sizeof(f)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); for(i=0;i<m;i++) { for(j=n;j>=a[i].b;j--) { for(int e=1;e<=k;e++) { b[e]=f[j][e]; c[e]=f[j-a[i].b][e]+a[i].a; } b[k+1]=-1; c[k+1]=-1; int x=1,y=1,z=1; while(z<=k&&(b[x]>=0||c[y]>=0)) { if(b[x]>c[y]) { f[j][z]=b[x++]; } else f[j][z]=c[y++]; if(f[j][z]!=f[j][z-1]) z++; } } } cout<<f[n][k]<<endl; } return 0;}
- 2016背包专题1005
- 2016背包专题1010
- 2016背包专题1008
- 背包专题
- 背包专题
- 背包专题、
- 背包专题
- 【背包专题】01背包
- 【背包专题】01背包
- POJ 多重背包专题
- 01 背包 专题
- 01背包专题
- Training:背包专题
- 分组背包专题小结
- 01背包专题
- 【背包专题汇总】
- DP专题->01背包
- 【专题】背包问题
- Ubuntu新增用户登录之后不能执行命令
- static字段初始化过程与静态内部类
- java多线程------实现多线程两种方式
- 309. Best Time to Buy and Sell Stock with Cooldown
- Spring 源码粘贴8-2
- 2016背包专题1005
- mac下配置环境变量
- 出栈顺序
- HDU5120:Intersection(圆环相交)
- 文章标题
- JS中获取元素的尺寸及位置
- leetcode 笔记
- ubuntu中mongodb安装与连接
- HTML5获取地理位置及百度地图展示实例