CodeForces 371C Hamburgers

来源:互联网 发布:短信监控软件 编辑:程序博客网 时间:2024/05/17 01:19

我的二分的基础。。。
不过数字应该要long long

#include<stdio.h>#include<string.h>int main(){    char menu[110];    scanf("%s",menu);    int i;    int len=strlen(menu);    int B=0,S=0,C=0;    for(i=0;i<len;i++)    {        if(menu[i]=='B')            B++;        else if(menu[i]=='S')            S++;        else            C++;    }    long long nb,ns,nc;    long long pb,ps,pc;    long long money;    scanf("%I64d%I64d%I64d",&nb,&ns,&nc);    scanf("%I64d%I64d%I64d",&pb,&ps,&pc);    scanf("%I64d",&money);    long long make=0;    long long max=nb+ns+nc+money/pb+money/ps+money/pc;//一个比ans绝对绝对大的数字,定为上限//    long long ans=0;    long long mymoney=money;    while(make<=max)//因为有make+1和max-1的关系,所以加上等号。。//    {        money=mymoney;        long long mid=(make+max)/2;        long long b=mid*B-nb;//在mid的时候需要多少食材//        long long c=mid*C-nc;        long long s=mid*S-ns;        if(b>0)            money=money-b*pb;//买食材ing//        if(c>0)            money=money-c*pc;        if(s>0)            money=money-s*ps;        if(money>0)        {            ans=mid;            make=mid+1;        }        else if(money==0)        {            ans=mid;            break;        }        else        {            max=mid-1;        }    }    printf("%I64d\n",ans);    return 0;}
0 0
原创粉丝点击