简单的分组背包问题~~
#include<string.h>
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int dp[1100000];
int main()
{
int n,t,i,w1,w2,t1,t2;
while(~scanf("%d%d",&n,&t))
{
while(n--)
{
scanf("%d%d%d%d",&w1,&t1,&w2,&t2);
for(i=t;i>=0;i--)
{
if(i>=t1)dp[i]=max(dp[i],dp[i-t1]+w1);
if(i>=t2)dp[i]=max(dp[i],dp[i-t2]+w2);
}
}
cout<<dp[t]<<endl;
}
return 0;
}