HDU 3127 WHUgirls

二维完全背包,理解似乎还不够全面,过几天回来再看看这题。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std; const int maxn=;
long long x[maxn],y[maxn],v[maxn];
long long dp[][]; int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int i,j,k,n,tot;
long long X,Y,xx,yy,vv;
scanf("%d%lld%lld",&n,&X,&Y);
tot=;
for(i=; i<=n; i++)
{
scanf("%lld%lld%lld",&xx,&yy,&vv);
x[tot]=xx;y[tot]=yy;v[tot]=vv;tot++;
x[tot]=yy;y[tot]=xx;v[tot]=vv;tot++;
} for(i=; i<=X; i++)
for(j=; j<=Y; j++)
dp[i][j]=; for(i=; i<=X; i++)
for(j=; j<=Y; j++)
for(k=; k<tot; k++)
if(i-x[k]>=&&j-y[k]>=)
dp[i][j]=max(dp[i][j] , max( dp[i-x[k]][j]+dp[x[k]][j-y[k]] ,dp[i-x[k]][y[k]]+dp[i][j-y[k]] )+v[k] );
printf("%lld\n",dp[X][Y]);
}
return ;
}
上一篇:《Linux内核设计与实现》第四章学习笔记——进程调度


下一篇:POJ 3481 Double Queue