1213148423 2016-08-09 22:17:35
点我顶贴
收藏
删除
#include "stdio.h"
int rec[35][1080005];
int n,t;
int vi[35][3];
int ti[35][3];
int max(int a,int b,int c)
{
if(a>=b && a>=c)
return a;
if(b>=a && b>=c)
return b;
if(c>=a && c>=b)
return c;
}
int f(int i,int j)
{
if(rec[i][j]!=0)
return rec[i][j];
if(j<0)
return -99999999;
if(i==0 || j==0)
return 0;
int a,b,c;
a=f(i-1,j-ti[i][1])+vi[i][1];
b=f(i-1,j-ti[i][2])+vi[i][2];
c=f(i-1,j);
rec[i][j]=max(a,b,c);
return rec[i][j];
}
int main(int argc, char* argv[])
{
//freopen("PID160.in","r",stdin);
scanf("%d %d",&n,&t);
for(int i=1;i<=n;i++)
scanf("%d %d %d %d",&vi[i][1],&ti[i][1],&vi[i][2],&ti[i][2]);
printf("%d",f(n,t));
return 0;
}