首页 > 代码库 > 【CF-371C】Hamburgers
【CF-371C】Hamburgers
题目链接:http://codeforces.com/problemset/problem/371/C
赤果果的大水题!!
题目大意:给你一个汉堡的配料,and现有的每种原料的个数,and每种原料的价格,and你有的money;问最多能做几个汉堡。
obviously 这道题具有 二分性质 Thus 直接二分答案 判断买x个汉堡时原料以及钱是否is enough;
第一眼看这道题,“哇,这是神题?”是的,我没戴眼镜;
Get down to the business,上代码
1 #include<cstdio> 2 #include<algorithm> 3 #include<cmath> 4 #include<iostream> 5 #include<cstdlib> 6 #include<string> 7 #include<cstring> 8 #include<queue> 9 #include<deque>10 #include<stack>11 #define LL long long12 using namespace std;13 char pl[105];14 int nb,ns,nc,pb,ps,pc,b,s,c;15 LL r;16 bool check(LL x){17 LL cb = max(((LL)b*x-nb)*pb,(LL)0);18 LL cs = max(((LL)s*x-ns)*ps,(LL)0);19 LL cc = max(((LL)c*x-nc)*pc,(LL)0);20 if(cb+cs+cc <= r) return true;21 else return false;22 }23 int main(){24 scanf("%s",pl);25 for(int i = 0;i < strlen(pl);i++){26 if(pl[i] == ‘B‘) b++;27 else if(pl[i] == ‘S‘) s++;28 else if(pl[i] == ‘C‘) c++;29 }30 scanf("%d%d%d",&nb,&ns,&nc);31 scanf("%d%d%d",&pb,&ps,&pc);32 scanf("%lld",&r);33 LL l = 0,r = pow(10,12)*2,mid;34 while(l < r){35 mid = (l + r)>>1;36 if(check(mid))37 l = mid+1;38 else r = mid;39 }40 printf("%lld\n",l-1);41 return 0;42 }
【CF-371C】Hamburgers
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。