标签:des style http java color os strong io
one Collector IITime Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2179 Accepted Submission(s): 1142
3 5 10 2 1 2 3 4 5 5 4 3 2 1 5 10 12 1 2 3 4 5 5 4 3 2 1 5 10 16 1 2 3 4 5 5 4 3 2 1
12 2 0
题意:第k优解问题。
思路:记录每个状态的前k优解,然后去重,更新当前状态的第k优解。
AC代码:
#include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #include <cstring> #include <stdlib.h> using namespace std; int a[105]; int dp[1005][35]; int va[105]; int vo[105]; bool cmp(int a,int b){ return a>b; } int main(){ int t; scanf("%d",&t); while(t--){ int k,n,m; scanf("%d%d%d",&n,&m,&k); for(int i=0;i<n;i++){ scanf("%d",&va[i]); } for(int i=0;i<n;i++){ scanf("%d",&vo[i]); } memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++){ for(int j=m;j>=vo[i];j--){ int temp=0; for(int l=0;l<k;l++){ a[temp++]=dp[j][l]; a[temp++]=dp[j-vo[i]][l]+va[i]; } sort(a,a+k*2,cmp); temp=0; dp[j][0]=a[0]; for(int l=1;l<k*2&&temp<k;l++){ if(a[l]!=a[l-1]){ dp[j][++temp]=a[l]; } } } } if(k==0) printf("0\n"); else printf("%d\n",dp[m][k-1]); } return 0; }
HDU 2639 Bone Collector II,布布扣,bubuko.com
标签:des style http java color os strong io
原文地址:http://blog.csdn.net/kimi_r_17/article/details/38237595