uva12563劲歌劲舞

来源:互联网 发布:XP网络打印机显示脱机 编辑:程序博客网 时间:2024/04/28 12:54



一开始竟然读错了题意,没有注意到歌曲数量优先这个条件。。。。


代码:


#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int T;int n,t;int a[100];int f[55][9005];int d[55][9005];int main(){    scanf("%d",&T);    int kase = 1;    while(T--)    {        scanf("%d%d",&n,&t);        for(int i = 1; i <= n; ++i)            scanf("%d",&a[i]);        memset(f,0,sizeof(f));        memset(d,0,sizeof(d));        for(int i = 1; i <= n; ++i)        {            for(int j = 1; j <= t; ++j)            {                d[i][j] = d[i - 1][j];                f[i][j] = f[i - 1][j];                if(j >= a[i])                {                    if(d[i][j] < d[i - 1][j - a[i]] + 1){                        d[i][j]  = d[i - 1][j - a[i]] + 1;                        f[i][j] = f[i - 1][j - a[i]] + a[i];                    }                    else if(d[i][j] == d[i - 1][j - a[i]] + 1)                        f[i][j] = max(f[i - 1][j],f[i - 1][j - a[i]] + a[i]);                }            }        }        printf("Case %d: %d %d\n",kase++,d[n][t - 1] + 1,f[n][t - 1] + 678);    }    return 0;}

0 0