CF526C Om Nom and Candies(思维)

题意:

可爱的小怪物Om Nom非常喜欢糖果。有一天,他发现自己处在一个相当棘手的境地,需要他多想一点,才能最享受糖果。如果您在他的位置上,您会成功完成相同的任务吗?


有一天,当他去找朋友埃文(Evan)时,Om Nom在家中找不到他,但他发现了两个带糖果的袋子。第一个装满蓝色糖果,第二个装满红色糖果。 Om Nom知道每个红色糖果的重量为Wr克,每个蓝色糖果的重量为Wb克。吃一个红色的糖果会给Om Nom Hr带来欢乐,而吃一个蓝色的糖果会给Om Nom Hb带来欢乐。

糖果是世界上最重要的事情,但另一方面,暴饮暴食也不是一件好事。 Om Nom知道如果他吃的糖超过C克,他就会生病。欧姆·诺姆(Om Nom)认为留下糖果剩菜不适当,因此他只能吃整个糖果。 Om Nom是一位出色的数学家,他迅速确定了应该吃多少种糖果才能获得最大数量的喜悦单位。你能重复他的成就吗?您可以假设每个袋子包含更多Om Nom可以吃的糖果。

输入项
单行包含五个整数C,Hr,Hb,Wr,Wb(1≤C,Hr,Hb,Wr,Wb≤109)。

输出量
打印一个整数-Om Nom可以获取的最大喜悦单位数。

题解:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1010;
typedef long long ll;
ll c,hr,hb,wr,wb;
ll check (ll x) {
    if (x*wr>c) return 0;
    ll tt=x*hr+(c-x*wr)/wb*hb;
    return tt;
}
ll check1 (ll x) {
    if (x*wb>c) return 0;
    ll tt=x*hb+(c-x*wb)/wr*hr;
    return tt;
}
int main () {
    cin>>c>>hr>>hb>>wr>>wb;
    ll l=0;
    ll r=c/wr;
    ll ans=0;
    //printf("%lld %lld\n",l,r);
    for (ll i=0;i<=1e5;i++) {
        ans=max(ans,check(i));
        ans=max(ans,check1(i));
    }
    printf("%lld\n",ans);
}

 

posted @ 2020-09-08 19:15  zlc0405  阅读(163)  评论(0编辑  收藏  举报