艺术馆由若干个展览厅和若干条走廊组成。每一条走廊的尽头不是通向一个展览厅,就是分为两个走廊。每个展览厅内都有若干幅画,每副画都有一个价值。经过走廊和偷画都是要耗费时间的。警察会在n 秒后到达进口,在不被逮捕的情况下你最多能得到的价值。
#include
#include
int dp[305][605],vis=1;
int n,m;
int max(int a,int b)
{
return a>b?a:b;
}
int adde(int now)
{
int t,x,w,c,i,j,ww1,ww2;
scanf("%d %d",&t,&x);
t*=2;
if(x==0)
{
vis++;
int l=vis;
ww1=adde(l);
vis++;
int r=vis;
ww2=adde(r);
for(i=t;i<=n;i++)
{
for(j=0;j<=i-t;j++)
{
dp[now][i]=max(dp[now][i],dp[l][j]+dp[r][i-j-t]);
}
}
return t;
}
else
{
for(i=0;i<x;i++)
{
scanf("%d %d",&w,&c);
for(j=n;j>=c;j--)
{
if(j-c>=t)
dp[now][j]=max(dp[now][j],dp[now][j-c]+w);
}
}
return t;
}
}
int main()
{
int t;
scanf("%d",&n);
n--;
t=adde(0);
printf("%d",dp[0][n]);
return 0;
}