Codeforces 371C Hamburgers(二分基础题)

点击这里进入题目


题目大意:给你一个字符串表示一个汉堡的结构,一个汉堡由BSC三个字母组成,然后给你你有的BSC原料的数目,和如果要购买BSC的价格。告诉你你所拥有的金钱,问最多能做出几个汉堡。


思路:很明显这符合单调性,可以直接二分出能做几个汉堡,check也很好写,基本是个二分模板题。


AC程序:

//库省略
using namespace std;
int b,s,c;
ll nb,ns,nc;
int cb,cs,cc;
string ss;
ll mon;
bool check(ll num)
{
    ll bb=(num*b-nb)*cb,ss=(num*s-ns)*cs,ccc=(num*c-nc)*cc;
    if(bb<0)
    bb=0;
    if(ss<0)
    ss=0;
    if(ccc<0)
    ccc=0;
    if (bb+ss+ccc<=mon)
    return 1;
    return 0;
}
int main()
{
    cin>>ss;
    for(int i=0;i<ss.size();i++)
    {
        if(ss[i]=='B')
        b++;
        else
        if(ss[i]=='S')
        s++;
        else
        c++;
    }
    cin>>nb>>ns>>nc;
    cin>>cb>>cs>>cc;
    cin>>mon;
    ll l=0,r=1e14,mid;
    while(l<r)
    {
        mid=(l+r)/2;
        if(check(mid))
        l=mid+1;
        else
        r=mid;
    }
    cout<<l-1<<endl;
    return 0;
}

转载于:https://www.cnblogs.com/NightRaven/p/9333241.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值