跟bzoj2427差不多,但没有环,也是dp经典的类似采药dp搞一搞。
code:
#include<cstdio>
#include<cstring>
int n,m;
int F[110][510],t[110],c[110];
int f[510];
int max(int x,int y){return x>y?x:y;}
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
int tmp,t2,c2;
scanf("%d %d %d",&tmp,&t[i],&c[i]);
for(int j=1;j<=tmp;j++)
{
scanf("%d %d",&t2,&c2);
for(int k=m;k>=t2;k--)
F[i][k]=max(F[i][k],F[i][k-t2]+c2);
}
}
for(int i=1;i<=n;i++)
for(int j=m;j>=t[i];j--)
for(int k=j-t[i];k>=0;k--)
if(j-t[i]-k>=0)f[j]=max(f[j],f[j-t[i]-k]+c[i]+F[i][k]);
printf("%d",f[m]);
}