Jin Ge Jin Qu hao UVA

来源:互联网 发布:轩辕剑入魔进阶数据 编辑:程序博客网 时间:2024/06/07 10:39

Jin Ge Jin Qu hao UVA - 12563 



这个地方学到的就是用结构体来存储没有个地方的最优状态(当最优的状态要求有2个或以上的时候)


#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<string>#include<cstring>#include<iomanip>#include<iostream>#include<stack>#include<cmath>#include<map>#include<vector>#define ll long long#define inf 0x3f3f3f3f#define INF 1000000000#define bug1 cout<<"bug1"<<endl;#define bug2 cout<<"bug2"<<endl;#define bug3 cout<<"bug3"<<endl;using namespace std;const int maxn=10000;struct Node{    int cnt;    int c;}dp[maxn];int a[maxn];int main(){    int t;    scanf("%d",&t);    int cas=0;    while(t--){        int n,m;        scanf("%d%d",&n,&m);        for(int i=1;i<=n;++i){            scanf("%d",&a[i]);        }        m--;        sort(a+1,a+1+n);        //cout<<m<<endl;        memset(dp,0,sizeof(dp));        for(int i=1;i<=n;++i){            for(int j=m;j>=a[i];j--){                if(dp[j].cnt<dp[j-a[i]].cnt+1){                    dp[j].cnt=dp[j-a[i]].cnt+1;                    dp[j].c=dp[j-a[i]].c+a[i];                }                if(dp[j].cnt==dp[j-a[i]].cnt+1){                    if(dp[j].c<dp[j-a[i]].c+a[i]){                        dp[j].c=dp[j-a[i]].c+a[i];                    }                }            }        }        printf("Case %d: %d %d\n",++cas,dp[m].cnt+1,dp[m].c+678);    }}

0 0
原创粉丝点击