UVA 10465 - Homer Simpson

这道题要尽可能的多吃Krusty- burger,尽可能的少浪费时间,也是背包问题。

#include<stdio.h>
#include<string.h>
#define MAXT 10005

int a[2], t[MAXT], cnt[MAXT];
int T;

void dp()
{
memset( t, 0, sizeof t);
memset( cnt, 0, sizeof cnt);
for( int i = 0; i < 2; i ++)
for( int j = a[i]; j <= T; j ++)
{
if( t[ j - a[i] ] + a[i] > t[j])
{
t[j] = t[ j - a[i]] + a[i];
cnt[j] = cnt[ j - a[i] ] + 1;
}
else if( t[j - a[i]] + a[i] == t[j] && cnt[j - a[i]] + 1 > cnt[j])
cnt[j] = cnt[j - a[i]] + 1;
}
}

int main()
{
while( scanf( "%d%d%d", &a[0], &a[1], &T) == 3)
{
dp();
if( t[T] == T)
printf( "%d\n", cnt[T]);
else
printf( "%d %d\n", cnt[T], T - t[T]);
}
return 0;
}

 

你可能感兴趣的:(home)