poj 3257

dp

代码:

#include<iostream>
#include<fstream>

using namespace std;

int l,n,b;

struct e{
	int w,x,f,c;
};

e a[10001];

int dp[1001][1001];

int cmp(const void *a,const void *b){
	e *s=(e *)a;
	e *t=(e *)b;
	return s->x-t->x;
}


void read(){
//	ifstream cin("in.txt");
	int i,j,k;
	cin>>l>>n>>b;
	for(i=0;i<n;i++)
		cin>>a[i].x>>a[i].w>>a[i].f>>a[i].c;
	qsort(a,n,sizeof(e),cmp);
	memset(dp,-1,sizeof(dp));
	
	i=0;
	while(a[i].x==0)
	{
		dp[a[i].w][a[i].c]=a[i].f;
		i++;
	}
	for(;i<=n;i++)
		for(k=1;k+a[i].c<=b;k++)
				if(dp[a[i].x][k]!=-1)
				{
					if(dp[a[i].x+a[i].w][k+a[i].c]==-1||dp[a[i].x+a[i].w][k+a[i].c]<dp[a[i].x][k]+a[i].f)
						dp[a[i].x+a[i].w][k+a[i].c]=dp[a[i].x][k]+a[i].f;
				}
	j=-1;
	for(i=b;i>=1;i--)
		j=max(dp[l][i],j);
	cout<<j<<endl;


}

int main(){
	read();
	return 0;
}

posted on 2011-05-06 21:49  宇宙吾心  阅读(227)  评论(0)    收藏  举报

导航