您的位置:首页 > 其它

vijos 1104

2016-07-21 19:54 302 查看
#include<iostream>

#include<cstdio>

using namespace std;

             //采药的时间 T

int w[110];//物品的time,

int v[110];//物品对应的待加

 //M为物品的个数

int main()

{

    int T, M;

    scanf("%d%d", &T, &M);

    for(int i=0; i<M; i++)

        scanf("%d%d", &w[i], &v[i]);

    int m[110][110] = {0};

    for(int j=0;j<=T; j++)

    {

        if(j<w[M-1])

            m[M-1][j] = 0;

        else

            m[M-1][j] = v[M-1];

    }

    for(int i=M-2; i>=0; i--)

    {

        for(int j=0; j<=T; j++)

        {

            if(j<w[i])

                m[i][j] = m[i+1][j];

            else

                m[i][j] = max(m[i+1][j], m[i+1][j-w[i]]+v[i]);

        }

    }

    int ans = 0;

    for(int i=0; i<M; i++)

    {

        for(int j=0; j<=T; j++)

        {

            ans = max(ans, m[i][j]);

        }

    }

    printf("%d\n", ans);

    return 0;

}

/*

70 3

71 100

69 1

1 2

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: