【CodeForces】[371C]Hamburgers

文章字数:226

问题描述

问题分析

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

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#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\n",res);
    }
    return 0;
}

该内容采用 CC BY-NC-SA 4.0 许可协议。

如果对您有帮助或存在意见建议,欢迎在下方评论交流。

加载中...