首页 > 学院 > 开发设计 > 正文

51Nod - 1548 枚举 + 暴力

2019-11-14 09:36:31
字体:
来源:转载
供稿:网友

题意:

一天,欧姆诺诺姆来到了朋友家里,他发现了许多糖果。有蓝色和红色两种。他知道每颗红色糖果重Wr克,每颗蓝色糖果重Wb克。吃一颗蓝色糖果会给他带来Hb的欢乐值,吃一颗红色糖果会给他带来Hr的欢乐值。

欧姆诺姆最多只能吃C克的糖果,而且每一颗糖果不能只吃一半。现在他想通过吃蓝色和红色的糖果来获得最大的欢乐值。

样例解释:每一种糖果吃两颗即可。

Input
单组测试数据。输入占一行有四个整数C,Hr,Hb,Wr,Wb (1≤C,Hr,Hb,Wr,Wb≤10^9).Output
输出最大可能获得的欢乐值。Input示例
样例输入110 3 5 2 3Output示例
样例输出116

思路:

这题的错误很有借鉴意义。一开始我的想法是,先找到wr和wb的最小公倍数lcm,然后找到c中最多包含t个lcm,然后在这t*lcm这个部分中不管是红的还是蓝的都可以填满,那么显然要选择性价比高的,然后剩下的部分再通过枚举其中一种颜色糖果个数的方式来计算结果。但是很遗憾,这种想法错了,是有反例的。剩下的就是直接每种糖果枚举1e5次,直接水过去。
上一篇:C语言中#if

下一篇:图的两种表示和接口

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表