UVA 10465 Homer Simpson

这个题目的题意的理解起来应该不苦难。这个人吃汉堡,有两种,一种吃下去要m分钟,另外一种吃下去要n分钟,给了t的时间如果他必须浪费时间,就要喝啤酒(注意题目后面有一句It is preferable that Homer drinks as little beer as possible),也就是说,在最好不要浪费时间的情况下,问他最多吃下去多少汉堡。所以就必须先来考虑时间,再来考虑吃下去汉堡的个数了。

下面贴代码(当然,我写的好像有点罗嗦):

View Code
 1 #include <iostream>
 2 #include <cstring>
 3 using namespace std;
 4 int num[10010],t[10010];
 5 int main()
 6 {
 7     int a,b,i,total;
 8     while(cin>>a>>b>>total)
 9     {
10         memset(num,0,sizeof(num));
11         memset(t,0,sizeof(t));
12         for(i = a;i <= total;i++)
13         {
14             t[i] = t[i - a] + a;
15             num[i] = num[i - a] + 1;
16         }
17         for(i = b;i <= total;i++)
18         {
19             if(t[i - b] + b > t[i])
20             {
21                 t[i] = t[i - b] + b;
22                 num[i] = num[i - b] + 1;
23             }
24             else if(t[i - b] + b == t[i] && num[i - b] + 1 > num[i])
25                 num[i] = num[i - b] + 1;
26         }
27         if(total == t[total])
28             cout<<num[total]<<endl;
29         else
30             cout<<num[total]<<" "<<total - t[total]<<endl;
31     }
32     return 0;
33 }


 

原文地址:https://www.cnblogs.com/zhexipinnong/p/2471935.html