UVA-12563

来源:互联网 发布:java 微信 编辑:程序博客网 时间:2024/05/19 20:20
#include<iostream>#include<stdio.h>#include<algorithm>#include<string.h>#define maxn 180*50+5using namespace std;struct Node{   int count;   int time; }dp[maxn];int a[maxn];int main(){    int T;    cin>>T;    int CASE=1;    while(T--){    //memset(dp,0,sizeof(dp));    int  N,V;    cin>>N>>V;    int i,j;    for(i=0;i<N;i++)cin>>a[i];    for( i=0;i<N;i++){        int pos1;        for(j=V;j>=a[i];j--){if(dp[j-a[i]].count+1>dp[j].count){                dp[j].time=dp[j-a[i]].time+a[i];                dp[j].count=dp[j-a[i]].count+1;}else if(dp[j-a[i]].count+1==dp[j].count&&dp[j].time<dp[j-a[i]].time+a[i]){dp[j].time=dp[j-a[i]].time+a[i];}                //cout<<1<<endl;        }    }    //for(i=0;i<200;i++)cout<<dp[i].time<<"  "<<dp[i].count<<"  "<<i<<endl;    //for(i=V;i>=0;i--){        //if(dp[i]<dp[V]){          //  cout<<i+1<<endl;          //  break;        //}   // }    cout<<"Case "<<CASE++<<": ";    cout<<dp[V-1].count+1<<" "<<dp[V-1].time+678<<endl;    for(i=0;i<=V;i++){        dp[i].time=0;        dp[i].count=0;    }    }    return 0;}

0 0