UVA - 10465 Homer Simpson
来源:互联网 发布:c难还是java难 编辑:程序博客网 时间:2024/05/18 01:43
题意:在尽量让时间不浪费的情况下使得吃的汉堡最多
贪心:
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 10005;int dp[MAXN],num[MAXN];int main(){ int m,n,t; while (scanf("%d%d%d",&m,&n,&t) != EOF){ memset(num,0,sizeof(num)); memset(dp,0,sizeof(dp)); for (int i = m; i <= t; i++){ dp[i] = dp[i-m] + m; num[i] = num[i-m] + 1; } for (int j = n; j <= t; j++){ if (dp[j - n] + n > dp[j]){ dp[j] = dp[j-n] + n; num[j] = num[j-n] + 1; } else if (dp[j] == dp[j-n] + n && num[j - n] + 1 > num[j]) num[j] = num[j - n] + 1; } if (dp[t] == t) printf("%d\n",num[t]); else printf("%d %d\n",num[t],t - dp[t]); } return 0;}
完全背包:价值和重量一样大
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 10005;int dp[MAXN];int main(){ int m[2],t; while (scanf("%d%d%d",&m[0],&m[1],&t) != EOF){ for (int i = 1; i <= t; i++) dp[i] = -MAXN; dp[0] = 0; for (int i = 0; i < 2; i++) for (int j = m[i]; j <= t; j++){ int t = dp[j - m[i]] + 1; if (dp[j] < t) dp[j] = t; } for (int i = t; i >= 0; i--) if (dp[i] >= 0){ if (i == t) printf("%d\n",dp[t]); else printf("%d %d\n",dp[i],t-i); break; } } return 0;}
- uva 10465 Homer Simpson
- uva 10465 Homer Simpson
- UVA 10465 Homer Simpson
- UVa 10465 - Homer Simpson
- UVa 10465 - Homer Simpson
- uva 10465 Homer Simpson
- UVa 10465 - Homer Simpson
- Uva-10465-Homer Simpson
- UVa:10465 Homer Simpson
- UVA - 10465 Homer Simpson
- uva 10465 - Homer Simpson
- UVa 10465 - Homer Simpson
- uva 10465 Homer Simpson
- UVa 10465 - Homer Simpson
- UVA - 10465 Homer Simpson
- UVA 10465 Homer Simpson
- UVA 10465 Homer Simpson
- uva 10465 Homer Simpson
- 修改openssh源代码,添加操作记录审记功能
- Libevent分解之数据结构SimpleQueue
- vc++:字符串处理总结
- QT树型控件QTreeWidget中checkstate的使用
- SEO的难度在于美化的最大化
- UVA - 10465 Homer Simpson
- DP最长公共子序列LCS问题笔记
- 操作系统中睡眠、阻塞、挂起的区别形象解释
- Ubuntu挂载与卸载新硬盘
- Erlang运行时提供的原子操作API
- Struts2源码分析--请求处理
- JFreechart乱码
- EL表达式在java web中应用实例
- 悲催的程序员 节日期间依旧被调侃