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;
}
浙公网安备 33010602011771号