【CodeForces】[371C]Hamburgers

这里写图片描述

【CodeForces】[670D2]Magic Powder - 2类似
同样是根据判断能不能做mid个
来进行二分查找

只不过这个每个汉堡所需的材料个数
需要自己用字符串来数

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char s[120];
__int64 cnt[3];
__int64 n[3];
__int64 p[3];
__int64 r;
bool judge(__int64 x) {
    __int64 t=r;
    for(int i=0; i<3; i++) {
        if(t/p[i]+n[i]<x*cnt[i])
            return false;
        else
            t-=max((__int64)0,(x*cnt[i]-n[i])*p[i]);
    }
    return true;
}
int main() {
    while(scanf("%s",s)!=EOF) {
        cnt[0]=cnt[1]=cnt[2]=0;
        int ls=strlen(s);
        for(int i=0; i<ls; i++) {
            if(s[i]=='B')
                cnt[0]++;
            else if(s[i]=='S')
                cnt[1]++;
            else
                cnt[2]++;
        }
        for(int i=0; i<3; i++)
            scanf("%I64d",&n[i]);
        for(int i=0; i<3; i++)
            scanf("%I64d",&p[i]);
        scanf("%I64d",&r);
        __int64 l=0,r=1e13,res;
        while(l<=r) {
            __int64 mid=(l+r)/2;
            if(judge(mid)) {
                res=mid;
                l=mid+1;
            } else
                r=mid-1;
        }
        printf("%I64d
",res);
    }
    return 0;
}

题目地址:【CodeForces】[371C]Hamburgers

原文地址:https://www.cnblogs.com/BoilTask/p/12569467.html