uva10465Homer Simpson

简介: 题意:HM先生喜欢吃汉堡,有两种汉堡,每种无限多个,吃完第一种的汉堡一个需要m时间,第二种需要n时间,HM先生饭量很大可以不停的吃,给定一个时间t,在t时间段内希望HM先生吃尽量多的汉堡,并且空余出来的时间要尽量少 分析:是一个只有两种元素的完全背包问题。

题意:HM先生喜欢吃汉堡,有两种汉堡,每种无限多个,吃完第一种的汉堡一个需要m时间,第二种需要n时间,HM先生饭量很大可以不停的吃,给定一个时间t,在t时间段内希望HM先生吃尽量多的汉堡,并且空余出来的时间要尽量少

分析:是一个只有两种元素的完全背包问题。

代码:

View Code
 1 #include <stdio.h>
 2 #include <iostream>
 3 #include <string.h>
 4 using namespace std;
 5 #define DEBUG
 6 const int MAXN = 10000 + 10;
 7 int dp[MAXN];
 8 const int INF = 0x3f3f3f3f;
 9 int max(int a, int b){
10     return a>b?a:b;
11 }
12 int main(){
13 #ifndef DEBUG
14     freopen("in.txt", "r", stdin);
15 #endif
16     int c[2], t;
17     while(scanf("%d%d%d", &c[0], &c[1], &t)!=EOF){
18         int i, j;
19         for(i=1; i<MAXN; i++) dp[i]=-INF;
20         dp[0]=0;
21         for(i=0; i<2; i++)
22             for(j=c[i]; j<=t; j++)
23                 dp[j]=max(dp[j], dp[j-c[i]]+1);
24         j=t;
25         while(dp[j]<0) j--;            //比如输入5 5 4 那么dp[4]<0,需要处理
26         printf("%d", dp[j]);
27         if(j!=t) printf(" %d", t-j);
28         printf("\n");
29     }
30     return 0;
31 }

 

目录
相关文章
UVa10123 No Tipping
UVa10123 No Tipping
58 0
uva10152 ShellSort
uva10152 ShellSort
57 0
UVa 10082 WERTYU
UVa 10082 WERTYU
125 0
概率dp - UVA 11021 Tribles
Tribles  Problem's Link:  http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33059   Mean:  有k个细菌,每个细菌只能存活一天,在死去之前可能会分裂出0,1,2....n-1个细菌,对应的概率为p0,p1,p2....pn-1。
825 0
|
算法
UVA题目分类
题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics 10300 - Ecological Premium 458 - The Decoder 494...
1563 0
uva 11806 - Cheerleaders
点击打开链接 题意:在一个n行m列的矩形里面放k个相同的石子,要求第一行,最后一行,第一列,最后一列都要有石子。问有几种方法? 思路: 1 如果题目没有要求“第一行,最后一行,第一列,最后一列都要有石子”,那么答案就是C[n*m][k],我们用C[i][j]表示i个里面选择j个的组合数。
817 0
|
C++
uva 11136 Hoax or what
点击打开链接uva 11136 思路: STL 分析: 1 题目意思比较不好理解,理解了题目之后我们可以利用STL的multiset来做 2 每次找到最大和最小的值,然后求解即可 代码: #include #include #in...
844 0
uva 1160 X-Plosives
点击打开链接uva 1160 思路: 并查集 分析: 1 看懂题目之和就是切菜了 代码: #include #include #include #include using namespace std; const int MAXN...
769 0