pku 1036 dp

 

#include <iostream>
#include <algorithm>
using namespace std;

class Gangters
{
public:
    int T, P, S;

    friend bool operator<(const Gangters &a, const Gangters &b)
    {
        return a.T < b.T;
    }
};

Gangters gt[110];
int hash[110];

int main()
{

    int N, K, T;
    while (scanf("%d %d %d", &N, &K, &T) != EOF)
    {
        int i, j;
        for (i = 0; i < N; ++i)
        {
            scanf("%d", &gt[i].T);
        }
        for (i = 0; i < N; ++i)
        {
            scanf("%d", &gt[i].P);
        }
        for (i = 0; i < N; ++i)
        {
            scanf("%d", &gt[i].S);
        }
        sort(gt, gt + N);
        int max = -1;
        for (i = 0; i < N; ++i)
        {
            hash[i] = -1;
            if (gt[i].T >= gt[i].S)
            {
                hash[i] = 0;
            }
            for (j = 0; j < i; ++j)
            {
                if (hash[i] < hash[j] && gt[i].T - gt[j].T >= gt[i].S - gt[j].S && gt[i].T -gt[j].T >= gt[j].S - gt[i].S)
                {
                    hash[i] = hash[j];
                }
            }
            if (hash[i] >= 0)
            {
                hash[i] += gt[i].P;
            }
            if (max < hash[i])
            {
                max = hash[i];
            }
        }
        if (max == -1)
        {
            max = 0;
        }
        printf("%d\n", max);
    }
    return 0;
}

posted on 2009-05-27 08:33  ZAFU_VA  阅读(218)  评论(0)    收藏  举报

导航