hdu 2639
来源:互联网 发布:淘宝新店一天自然流量 编辑:程序博客网 时间:2024/06/05 14:13
第K大背包问题
现在01的基础上多加一维,dp[v][k],表示在v下第k大的价值。。。
用A[ ],B[ ];分别记录加入第i件物品的前k个最大价值,不加入第i件物品的前k个最大价值
取两个数组的前k大值
也可以用一个数组存,再排序,找前k项
#include<stdio.h>#include<string.h>int dp[1010][40];int main(){int i,m,n,V[110],W[110],j,k,A[40],B[40],t,a,b,c,v;scanf("%d",&t);while(t--){scanf("%d%d%d",&n,&v,&k);for(i=0;i<n;i++)scanf("%d",&W[i]);for(i=0;i<n;i++)scanf("%d",&V[i]);memset(dp,0,sizeof(dp));for(i=0;i<n;i++)for(j=v;j>=V[i];j--){for(m=1;m<=k;m++){A[m]=dp[j-V[i]][m]+W[i];B[m]=dp[j][m];}A[m]=B[m]=-1;a=b=c=1;while(c<=k&&(a!=m||b!=m)){if(A[a]>B[b])dp[j][c]=A[a++];else dp[j][c]=B[b++];if(dp[j][c]!=dp[j][c-1])c++;}}printf("%d\n",dp[v][k]);}return 0;}
- HDU 2639
- hdu 2639
- hdu 2639
- hdu 2639
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- 计算两点间距离 tzc
- 五月感悟
- Android getSystemService()
- 简单android音乐播放器中 android学习(四)
- POJ——3083(深搜加宽搜的综合应用)
- hdu 2639
- AS400中PF,LF,DSPF创建和注意要点
- runOnUiThread()
- Linux各个发行版本代号整理
- Today is a Friday
- IT项目管理--做人
- AOP
- 第8周项目2TIME类运算符重载
- Yahoo! Hack Beijing Challenge----Question 1 C语言实现及思路